sql – 选择与列表中的所有项匹配的行

前端之家收集整理的这篇文章主要介绍了sql – 选择与列表中的所有项匹配的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有两个表:

汽车 – 汽车清单

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
)

猜你在找的MsSQL相关文章