假设有两个表:
问题:
如何识别从 passedtest 表中通过所有测试 (A、B、C、D) 的汽车?
IN 语句的局限性:
使用 IN 语句匹配包含测试列表的行可能会返回仅通过其中一部分测试的汽车。
解决方案:分组并计算不同的测试类型
此解决方案利用 COUNT() 和 HAVING 子句:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4;</code>
此查询按 carname 分组行并计算不同的 testtype 值的数量。计数为 4 的汽车已通过所有四个测试。
附加提示:
要根据结果集检索 cars 表中的数据,请使用此扩展查询:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 );</code>
以上是如何在数据库中查找通过所有测试(A、B、C、D)的汽车?的详细内容。更多信息请关注PHP中文网其他相关文章!