假設有兩個表:
問題:
如何辨識從 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中文網其他相關文章!