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

如何从数据库表中选择通过所有测试的汽车?

DDD
DDD原创
2025-01-14 10:19:49587浏览

How to Select Cars That Passed All Tests from a Database Table?

数据库查询:识别通过所有测试的汽车

本指南演示了如何从数据库中有效地选择已成功完成一组预定义测试的汽车。 我们将重点关注这样一个场景:我们需要识别 passedtest 表中已通过所有测试(A、B、C 和 D)的汽车。

IN声明的局限性

虽然 IN 语句对于检查列表中是否存在某个值很有用,但它不适合此特定任务。 使用IN会错误地识别仅通过一项所需测试的汽车。 需要一种更稳健的方法。

利用聚合和分组

解决方案在于使用聚合函数和分组。 我们使用 COUNT() 函数来确定每辆车通过的不同测试类型的数量。 然后,GROUP BY 子句按汽车名称组织结果,使我们能够对每辆车的不同测试进行计数。

使用 HAVING

过滤结果

HAVING 子句对于过滤分组结果至关重要。 它允许我们隔离具有等于所需测试总数(在本例中为四)的不同测试类型的汽车。

SQL 解决方案

以下 SQL 查询达到了预期的结果:

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

此查询有效地仅从 carname 表中选择已通过所有四个指定测试的 passedtest

扩展综合数据查询

要检索有关通过所有测试的汽车的更多详细信息,可以使用嵌套查询:

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

此增强型查询从 cars 表中检索那些被识别为已通过 passedtest 表中所有测试的汽车的所有列。

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

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