2 つのテーブルがあるとします。
質問:
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 の車は 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 中国語 Web サイトの他の関連記事を参照してください。