SQLクエリを使用して、1つのフィールドが両方で同一であるレコードを検索できますか?つまり、次の表を使用して、名前の列を比較する(そして電話を無視する)ことで1,3(ID)を返すことができますか?
ID | 名前| 電話 1 | ボブ| 5555555555 2 | ジョン| 1234567890 3 | ボブ| 1515151515 4 | ティム| 5555555555
SQLクエリを使用して、1つのフィールドが両方で同一であるレコードを検索できますか?つまり、次の表を使用して、名前の列を比較する(そして電話を無視する)ことで1,3(ID)を返すことができますか?
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)は表示されません。