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

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

Mary-Kate Olsen
发布: 2025-01-14 10:35:46
原创
843 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板