首页 >数据库 >mysql教程 >如何在数据库中查找通过所有测试(A、B、C、D)的汽车?

如何在数据库中查找通过所有测试(A、B、C、D)的汽车?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-14 10:35:46846浏览

How to Find Cars That Passed All Tests (A, B, C, D) in a Database?

筛选匹配列表中所有项目的行组

假设有两个表:

  • cars: 列出汽车及其对应的型号。
  • passedtest: 记录每辆车通过的测试,包括其唯一 ID、车名、测试类型和日期。

问题:

如何识别从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn