我想摆脱我的数据库中的重复项。可以有一个标准的多个副本,然后将它们组合在一起。
让我们说B是A的副本,C也是A的副本然后应该有像
的结果*id* | *duplicate*
A | B, C
但现在结果如下:
*id* | *duplicate*
A | B, C
B | C
当然这是正确的。问题是,我希望结果中已经显示为 duplicates 的ID未在列 id 中再次列出,并带有自己的重复项。
以下是一个示例:http://sqlfiddle.com/#!9/61692/1/0
有什么建议吗?
谢谢, 保罗
编辑:
这里是示例的来源(由Zohar Peled推荐):
CREATE TABLE duplicates
(`id` int, `Name` varchar(7))
;
INSERT INTO duplicates
(`id`, `Name`)
VALUES
(1, 'Bob'),
(2, 'Bob'),
(3, 'Bob'),
(4, 'Alice')
;
SELECT DISTINCT d1.`id`, GROUP_CONCAT(d2.`id`) as duplicates
FROM `duplicates` as d1, `duplicates` as d2
WHERE
d1.`id`< d2.`id` AND
d1.`Name` = d2.`Name`
GROUP BY d1.`id`
答案 0 :(得分:1)
这是一个相当不正统的解决方案,但是嘿......
Location