1

構造が次のようなテーブルがあります。

+----+-------+----------+
| ID | Class | Names    |
+----+-------+----------+
| 1  | Paper |    Ed    |
+----+-------+----------+
| 2  | Glass |    Pete  |
+----+-------+----------+
| 3  | Glass |    Ed    |
+----+-------+----------+
| 4  | Rock  |    Fred  |
+----+-------+----------+

紙とガラスのクラスを持つ名前を見つけたい. したがって、この小さなテーブルでは、次のように返されます。

+----+-------+----------+
| ID | Class | Names    |
+----+-------+----------+
| 1  | Paper |    Ed    |
+----+-------+----------+
| 3  | Glass |    Ed    |
+----+-------+----------+

ただし、名前をクエリの一部にすることはできません。class = paper および class = glass の名前を検索する必要があります。だから私は紙とガラスの両方を持っている名前だけが欲しい.

簡素化された SQL は次のようになります。

SELECT NamesFROM table WHERE Class= 紙 AND Class= ガラス

行には1つのクラス値しかないため、明らかにこれは機能しません。

ティア

4

1 に答える 1

1
SELECT Names 
FROM table 
WHERE Class IN ('Paper','Glass') -- list of Class
GROUP BY Names
HAVING COUNT(*) = 2              -- number of class

Classがすべての で一意でない場合names、 aDISTINCTは一意の値のみをカウントする必要があります。

HAVING COUNT(DISTINCT Class) = 2 
于 2013-10-15T09:13:21.100 に答える