前端之家收集整理的这篇文章主要介绍了
sql – 选择与列表中的所有项匹配的行,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有两个表:
汽车 – 汽车清单
@H_
301_4@carname | modelnumber | ...@H_
404_5@
passtest – 包含汽车通过的每项测试:
@H_
301_4@id | carname | testtype | date | ...
1 | carA | A | 2000 |
2 | carB | C | 2000 |
3 | carC | D | 2001 |
4 | carA | C | 2002 |@H_
404_5@
现在,如何从通过所有测试(A,B,C,D)的passtest表中选择一辆汽车?
我尝试了IN语句,但它也匹配甚至通过一次测试的汽车。我正在寻找一个语句来匹配所有行中列表中的所有值。
这个怎么样?
@H_
301_4@SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4@H_
404_5@
您还可以将其用作从汽车表中获取信息的内部声明:
@H_
301_4@SELECT *
FROM cars
WHERE carname IN (
SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4
)@H_
404_5@
原文链接:https://www.f2er.com/mssql/84242.html