篩選符合清單中所有項目的行
假設您有兩個表,“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中文網其他相關文章!