gpt4 book ai didi

mysql - 如何找到重复的内容并使最后一个条目成为主ID?

转载 作者:行者123 更新时间:2023-11-29 07:37:58 26 4
gpt4 key购买 nike

我在mysql方面遇到了一些问题,希望你能够帮助我。 :)

此代码用于简化图书馆网站上的搜索结果。一本书可以多次出版,但书的内容保持不变。这就是为什么当我们搜索“Ze Book”或其 ISBN 之一时只需要出现一本书。

这是我的表格:

id | isbn    | bookname | disabled | alias
1 | A-B-C-D | Ze Book | 0 |
2 | E-F-G-H | Ze Book | 0 |
3 | I-J-K-L | Ze Book | 0 |
4 | M-N-O-P | Bookeee | 0 |
5 | Q-R-S-T | Bookeee | 0 |

这就是我想要为table做的事情:

id | isbn    | bookname | disabled | alias
1 | A-B-C-D | Ze Book | 1 |
2 | E-F-G-H | Ze Book | 1 |
3 | I-J-K-L | Ze Book | 0 |A-B-C-D, E-F-G-H
4 | M-N-O-P | Bookeee | 1 |
5 | Q-R-S-T | Bookeee | 0 |M-N-O-P

我不知道到底从哪里开始,特别是如果它可以直接用 mysql 完成。

目前,我已经成功识别出重复的书名:

SELECT bookname, COUNT(*) AS number
FROM table
GROUP BY bookname
HAVING COUNT(*) >1
ORDER BY number DESC

有什么想法下一步该做什么吗?

提前非常感谢,您可能已经注意到,我仍在学习如何编码。 :)

最佳答案

你对此满意吗?:

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,isbn VARCHAR(12) NOT NULL
,bookname VARCHAR(12) NOT NULL
);

INSERT INTO my_table VALUES
(1,'A-B-C-D','Ze Book'),
(2,'E-F-G-H','Ze Book'),
(3,'I-J-K-L','Ze Book'),
(4,'M-N-O-P','Bookeee'),
(5,'Q-R-S-T','Bookeee');


SELECT a.*
, b.aliases
FROM my_table a
JOIN
( SELECT x.bookname
, MAX(x.id) max_id
, GROUP_CONCAT(DISTINCT y.isbn) aliases
FROM my_table x
JOIN my_table y
ON y.bookname = x.bookname
AND y.id < x.id
GROUP
BY x.bookname
) b
ON b.bookname = a.bookname
AND b.max_id = a.id;
+----+---------+----------+-----------------+
| id | isbn | bookname | aliases |
+----+---------+----------+-----------------+
| 3 | I-J-K-L | Ze Book | A-B-C-D,E-F-G-H |
| 5 | Q-R-S-T | Bookeee | M-N-O-P |
+----+---------+----------+-----------------+

关于mysql - 如何找到重复的内容并使最后一个条目成为主ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com