我可以使用 SQL 查询来查找其中一个字段在两者中相同的记录吗?也就是说,我可以使用下表并通过比较名称列(并忽略电话)返回 1,3(ID)吗?
身份证 | 姓名 | 电话 1 | 鲍勃 | 5555555555 2 | 约翰 | 1234567890 3 | 鲍勃 | 1515151515 4 | 蒂姆 | 5555555555
我可以使用 SQL 查询来查找其中一个字段在两者中相同的记录吗?也就是说,我可以使用下表并通过比较名称列(并忽略电话)返回 1,3(ID)吗?
身份证 | 姓名 | 电话 1 | 鲍勃 | 5555555555 2 | 约翰 | 1234567890 3 | 鲍勃 | 1515151515 4 | 蒂姆 | 5555555555
要获取多次存在的所有名称,您可以执行以下语句:
SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
要获取以这种方式连接的重复项“1,3”的 ID,请使用GROUP_CONCAT:
SELECT GROUP_CONCAT( ID SEPARATOR ',' )
FROM Table
GROUP BY Name
HAVING COUNT(*) > 1
另一种 - 不一定有效 - 方法是使用自连接:
SELECT P1.Id, P2.Id
FROM People P1, People P2
WHERE P1.Id < P2.Id
AND P1.Name = P2.Name;
第一个条件确保您只看到对 (1,3) 而不是无关的对 (3,1) 或相同的行 (1,1)、(3,3)。