1

このようなサンプルテーブルがあります。

ID           Name
1            Jane  
2            John
3            Kevin
4            George
5            Jane

クエリから取得したい結果は、2 つの値のテーブルになります。

ID           Name
1            Jane
5            Jane

これは、テーブルの 2 つのコピーを使用して、一方のテーブルと他方のテーブルの名前を比較することで実行できることはわかっていますが、これを機能させることはできませんでした。

--

申し訳ありませんが、これを追加しませんでした。重複する値をすべて取得したい。

重複などに関するすべての応答を見ることができます。count(*) を使用して重複を見つけることに関する stackoverflow の投稿を見てきましたが、テーブルの 2 つのコピー (t と tt など) を作成することでそれを実行できるかどうか疑問に思います。次に、t.name = tt.name をチェックしますか?

4

4 に答える 4

3

これを行う 1 つの方法は、 を使用することEXISTS()です。

SELECT  *
FROM    tablename a
WHERE   EXISTS
        (
            SELECT  1
            FROM    tableName b
            WHERE   a.Name = b.name
            GROUP   BY Name
            HAVING  COUNT(*) > 1
        )
于 2013-10-22T01:08:57.873 に答える
3

私は通常、コードではJoinsなく使用することをお勧めします。exist,in or not in

 Select A.ID,B.Name from Tablename A
    inner join Tablename B
    on A.Name = B.Name
     where a.id <> b.id 

私は通常、これをお勧めしません。通常、名前ではなく ID を結合する必要があります。ここにデモがあります

于 2013-10-22T01:09:19.813 に答える
0

これを試して

SELECT ID, Name
FROM table1
WHERE Name IN
 (SELECT Name
  FROM table1
  GROUP BY Name
  HAVING COUNT(ID) > 1
 )
ORDER BY ID
于 2013-10-22T01:15:42.227 に答える
-1
SELECT A.*
FROM SAMPLE_TABLE A,
(
SELECT NAME,COUNT(*)
FROM SAMPLE_TABLE
GROUP BY NAME
HAVING COUNT(*) > 1
) B
WHERE A.NAME = B.NAME;
于 2013-10-22T01:14:46.383 に答える