假设我有两个表:
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
)

10-06 09:15