2013-10-15 99 views
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将是:

选择Names FROM表WHERE Class =纸和Class =玻璃

显然,这并不工作,你作为行只有一个类值。

TIA

回答

1
SELECT Names 
FROM table 
WHERE Class IN ('Paper','Glass') -- list of Class 
GROUP BY Names 
HAVING COUNT(*) = 2    -- number of class 
Class不是每个 names独特的情况下

,一个DISTINCT是需要计算不重复的值。

HAVING COUNT(DISTINCT Class) = 2