從測試清單中找出通過所有測試的汽車
這項任務需要從「cars」表中識別已成功通過「passedtest」表中列出的所有測試的汽車。雖然簡單的IN語句可以檢索通過任何單一測試的汽車,但要求是確保每輛車都通過了清單中的所有測試。
為了實現這一點,我們可以結合使用聚合(GROUP BY,HAVING)和集合論。
解:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
解釋:
要包含來自「cars」表的數據,可以使用內部語句:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname) );</code>
替代方法:
另一個選擇是使用JOIN操作:
<code class="language-sql">SELECT DISTINCT c.carname FROM cars c JOIN PassedTest pt ON c.carname = pt.carname GROUP BY c.carname HAVING COUNT(*) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
以上是我如何找到通過所有列出測試的汽車?的詳細內容。更多資訊請關注PHP中文網其他相關文章!