ホームページ > データベース > mysql チュートリアル > SQL を使用してリスト内のすべてのテストに合格した車を選択するにはどうすればよいですか?

SQL を使用してリスト内のすべてのテストに合格した車を選択するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-14 10:53:44
オリジナル
690 人が閲覧しました

How Can I Select Cars That Passed All Tests in a List Using SQL?

リスト内のすべての項目に一致する行をフィルターします

「cars」と「passedtest」という 2 つのテーブルがあり、特定のテスト セットに合格した自動車を識別する方法が必要だとします。 「passedtest」テーブルには、各車両が合格したテストが記録されます。

これを実現する 1 つの方法は、IN ステートメントを使用することです。ただし、このメソッドは、指定されたリスト内のテストの 1 つにさえ合格した自動車を返すため、望ましい結果が得られない可能性があります。リスト内のすべての行のすべての値を一致させるには、別の解決策が必要です。

次の SQL クエリは、GROUP BY 句と HAVING 句を利用してこのタスクを実行します。

<code class="language-sql">SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4</code>
ログイン後にコピー

このクエリは、まず「passedtest」テーブル内の行を「carname」列ごとにグループ化します。次に、COUNT(DISTINCT) 関数を使用して、各車両の個別の「testtype」値の数を計算します。 HAVING 句は、結果をフィルタリングして、さまざまなテスト タイプの数が 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>
ログイン後にコピー

この拡張クエリは、指定された基準を満たす車両の「cars」テーブルからすべての関連データを取得します。

以上がSQL を使用してリスト内のすべてのテストに合格した車を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート