資料庫查詢:辨識通過所有測試的汽車
本指南示範如何從資料庫中有效地選擇已成功完成一組預定義測試的汽車。 我們將重點放在這樣一個場景:我們需要識別 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中文網其他相關文章!