假设我有两个表:
汽车
– 汽车列表
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
)
关于sql - 选择与列表中所有项目匹配的行组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977126/