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