首页 >数据库 >mysql教程 >如何使用 SQL 选择列表中通过所有测试的汽车?

如何使用 SQL 选择列表中通过所有测试的汽车?

Susan Sarandon
Susan Sarandon原创
2025-01-14 10:53:44691浏览

How Can I Select Cars That Passed All Tests in a List Using SQL?

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

假设您有两个表,“cars”和“passedtest”,您需要一种方法来识别已通过特定测试集的汽车。“passedtest”表记录每辆车通过的测试。

一种实现此目标的方法是使用IN语句。但是,此方法可能无法提供所需的结果,因为它返回即使通过指定列表中的一个测试的汽车。要匹配所有行中列表中的所有值,需要另一种解决方案。

以下SQL查询利用GROUP BY和HAVING子句来完成此任务:

<code class="language-sql">SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4</code>

此查询首先按“carname”列对“passedtest”表中的行进行分组。然后,它使用COUNT(DISTINCT)函数计算每辆车的不同“testtype”值的计数。HAVING子句用于筛选结果,仅选择不同测试类型计数等于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>

此扩展查询将为满足指定条件的车辆从“cars”表中检索所有相关数据。

以上是如何使用 SQL 选择列表中通过所有测试的汽车?的详细内容。更多信息请关注PHP中文网其他相关文章!

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