0

私はそこに同様の質問があることを知っていますが、私はそれらの中にこの特定のケースを見つけることができません。誰かがこれがどこで答えられるか知っているならば、リンクで私を接続してください。そうでなければここに行きます。

興味のある2つのフィールド(コードとID)を持つテーブルがあります。idフィールドと組み合わせて主キーを作成するcompanyフィールドがありますが、これらはいずれも一意ではありません。

同じコードに複数の名前が関連付けられているすべてのコードと名前のリストが必要です。だから私の日付がこのように見える場合:

| code          | name          | company                                            |
+---------------+---------------+----------------------------------------------------+
| 00009         | name          | 1                                                  |
| 00009         | name          | 2                                                  |
| 00009         | name          | 3                                                  |
| 00009         | name          | 4                                                  |
| 00009         | diff name     | 1                                                  |
| 00014         | Foo           | 2                                                  |
| 00014         | foo           | 3                                                  |
| 00014         | foo           | 4                                                  |
| 00014         | foo           | 5                                                  |
| 00014         | foo           | 6                                                  |
| 00015         | barbaz        | 1                                                  |
| 00015         | barbaz        | 2                                                  |
| 00015         | barbaz        | 3                                                  |
| 00015         | barbaz        | 4                                                  |
| 00015         | bar baz       | 5                                                  |
| 00017         | foo           | 1                                                  |
| 00018         | bar           | 1                                                  |

結果も次のようになります。

| code          | name                                                              |
+---------------+-------------------------------------------------------------------+
| 00009         | name                                                              |
| 00009         | diff name                                                         |
| 00014         | Foo                                                               |
| 00014         | foo                                                               |
| 00015         | barbaz                                                            |
| 00015         | bar baz                                                           |

私は以下を含むいくつかのことを試みました

SELECT DISTINCT t1.code, t1.name from items t1 
  inner join (select t2.code from items t2 group by t2.name ) t2 
  on (t1.code = t2.code)    
  group by t1.code order by t1.code;

もちろんどちらが間違っています。洞察をありがとう!

[編集]私は1つの詳細に言及するのを忘れました。特定のコードに複数の一意の名前エントリがある結果のみを一覧表示したいと思います。初期データを更新しました(これにより、希望する結果が変更されることはありません)。

[タイプミスのために編集]

4

1 に答える 1

2

COUNT(DISTINCT)でHAVINGを使用します。

SELECT code, name
FROM items
WHERE code IN (
    SELECT code 
    FROM items
    GROUP BY code 
    HAVING count(DISTINCT name) > 1
) t1
ORDER BY code, name
于 2012-12-06T20:32:27.490 に答える