mysql自我加入group_concat而没有重复

时间:2015-04-30 18:53:19

标签: mysql duplicates group-concat self-join

我想摆脱我的数据库中的重复项。可以有一个标准的多个副本,然后将它们组合在一起。

让我们说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`

1 个答案:

答案 0 :(得分:1)

这是一个相当不正统的解决方案,但是嘿......

Location