查询查找重复数据
查询查找重复数据
我有一个如下架构的表:
CUSTOMERS (id INT, name VARCHAR(10), height VARCHAR(10), weight INT)
id
是主键。我想找出具有完全相同姓名、相同身高和相同体重的人所在的行。换句话说,我想找到相对于 name
、height
和 weight
重复的行。
示例表:
1, sam, 160, 100 2, ron, 167, 88 3, john, 150, 90 4, sam, 160, 100 5, rick, 158, 110 6, john, 150, 90 7, sam, 166, 110
示例输出:
现在由于有人拥有相同的姓名、相同的身高和相同的体重:
sam (id=1),sam (id=4)
和
john (id=3),john (id=6)
我想获得这些ID。如果每个匹配只获取一个id
(即从第一个匹配获取id=1,从第二个匹配获取id=3),那也可以。
我正在尝试这个查询,但不确定它是否正确。
SELECT id FROM customers GROUP BY name, height, weight
admin 更改状态以发布 2023年5月25日
尝试这个(适用于 SQL Server):
SELECT t.NAME, 'Ids = '+ ( SELECT cast(Id as varchar)+',' FROM Customers c WHERE c.NAME = t.NAME AND c.Weight = t.Weight AND c.Height = t.Height FOR XML PATH('') ) FROM ( SELECT Name, height, weight FROM Customers GROUP BY Name, height, weight HAVING COUNT(*) > 1 ) t
或者
如您所要求 - 每个匹配只有一个 ID
SELECT t.NAME, c.Id FROM ( SELECT Name, height, weight FROM Customers GROUP BY Name, height, weight HAVING COUNT(*) > 1 ) t JOIN Customers c ON t.NAME AND c.Weight = t.Weight AND c.Height = t.Height