我可以使用SQL查询来查找其中一个字段在两个表中都相同的记录吗?也就是说,我可以使用上面的表格,并通过比较名称列(并忽略电话)返回1,3(id)吗?
要获取所有存在多次的名称,您可以执行以下语句:
SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
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)。