首頁 > 資料庫 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板