5

我可以使用 SQL 查询来查找其中一个字段在两者中相同的记录吗?也就是说,我可以使用下表并通过比较名称列(并忽略电话)返回 1,3(ID)吗?

    身份证 | 姓名 | 电话

    1 | 鲍勃 | 5555555555
    2 | 约翰 | 1234567890
    3 | 鲍勃 | 1515151515
    4 | 蒂姆 | 5555555555
4

3 回答 3

10

要获取多次存在的所有名称,您可以执行以下语句:

SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
于 2010-01-13T00:36:07.600 回答
2

要获取以这种方式连接的重复项“1,3”的 ID,请使用GROUP_CONCAT

SELECT GROUP_CONCAT( ID SEPARATOR ',' )
FROM Table
GROUP BY Name
HAVING COUNT(*) > 1
于 2010-01-13T00:44:06.063 回答
0

另一种 - 不一定有效 - 方法是使用自连接:

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)。

于 2010-01-13T01:06:33.033 回答