我想在mysql表中找到重复的条目。我想比较不同的领域。这是我桌子的结构:
ID FirstName LastName Street ZIP City IpAddress
1 Jack Smith 2nd 12345 Sample1 12.21.24.212
2 Paul Miller 3rd 45685 Sample2 78.54.85.654
3 Jenny Smith 3rd 77273 Sample3 84.91.67.311
4 Frank Jackson 1st 27819 Sample1 78.54.85.654
5 Jack Smith 3rd 72891 Sample2 94.79.99.465
现在我想分别比较街道和ip列,然后我想找到名字和姓氏的组合。我的表中实际上还有一些我想要搜索的列,但我认为上面的例子可以让你了解我正在计划的内容。
我需要可能重复的条目的ID号。
在上面的例子中,当我比较名字和姓氏的组合时,输出应该是id号1和5。
如果我比较街道名称,输出应该是id号码2,3和5。
ip地址的输出应该是id号2和4。
有没有人对如何做到这一点有一些想法?比较这些不同表格的最佳方法是什么?我不介意我是否需要进行多次查询。
答案 0 :(得分:1)
使用GROUP_CONCAT()
获取组内的所有ID,并GROUP BY
指定您要查找的重复列的列。并且您可以使用COUNT(*)
,因此您只返回具有重复项的那些。
街道:
SELECT street, GROUP_CONCAT(id)
FROM yourTable
GROUP BY street
HAVING COUNT(*) > 1
姓名:
SELECT firstname, lastname, GROUP_CONCAT(id)
FROM yourTable
GROUP BY firstname, lastname
HAVING COUNT(*) > 1