假设我有两个表:
汽车 – 汽车清单
carname | modelnumber | ...
passtest – 包含汽车通过的每项测试:
id | carname | testtype | date | ... 1 | carA | A | 2000 | 2 | carB | C | 2000 | 3 | carC | D | 2001 | 4 | carA | C | 2002 |
现在,如何从通过所有测试(A,B,C,D)的passtest表中选择一辆汽车?
我尝试了IN语句,但它也匹配甚至通过一次测试的汽车。我正在寻找一个语句来匹配所有行中列表中的所有值。
解决方法
这个怎么样?
SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4
您还可以将其用作从汽车表中获取信息的内部声明:
SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 )