5

SQLクエリを使用して、1つのフィールドが両方で同一であるレコードを検索できますか?つまり、次の表を使用して、名前の列を比較する(そして電話を無視する)ことで1,3(ID)を返すことができますか?

    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 に答える