MySQL サブクエリのチュートリアルと例
サブクエリとは何ですか?
サブクエリは、別のクエリ内に含まれる選択クエリです。 内部選択クエリは通常、外部選択クエリの結果を決定するために使用されます。
サブクエリ構文を見てみましょう –
MyFlix ビデオ ライブラリに対する一般的な顧客の不満は、映画タイトルの数が少ないことです。 管理者は、タイトル数が最も少ないカテゴリの映画を購入したいと考えています。
次のようなクエリを使用できます
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
それは結果をもたらします
このクエリがどのように機能するかを見てみましょう
上記は次の形式です 行サブクエリこのようなサブクエリでは、内部クエリは 1 つの結果しか返しません。行サブクエリで使用できる演算子は [=、>、=、<=、、!=、] です。
別の例を見てみましょう。
映画をレンタルしてまだ返却していない人の名前と電話番号が欲しいとします。名前と電話番号がわかったら、その人に電話してリマインダーを送ります。次のようなクエリを使用できます。
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
このクエリがどのように機能するかを見てみましょう
この場合、内部クエリは複数の結果を返します。 上記はT型です可能なサブクエリy.
これまで XNUMX つのクエリを見てきましたが、次に例を見てみましょう。 トリプルクエリ!!!
経営陣が最も高額な料金を支払った会員に報酬を与えたいと考えているとします。
次のようなクエリを実行できます
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
上記のクエリでは次の結果が得られます。
サブクエリ vs 結合!
Joins と比較すると、サブクエリは使いやすく、読みやすいです。 それらはそれほど複雑ではありません ジョイン
したがって、頻繁に使用されるのは、 SQL初心者.
ただし、サブクエリにはパフォーマンスの問題があります。 サブクエリの代わりに結合を使用すると、パフォーマンスが最大 500 倍向上する場合があります。
選択肢があれば、サブクエリに対して JOIN を使用することをお勧めします。
サブクエリは、JOIN操作を使用して上記を実現できない場合にフォールバックソリューションとしてのみ使用してください。
製品概要
- サブクエリは、別のクエリ内に埋め込まれたクエリです。 埋め込みクエリは内部クエリと呼ばれ、コンテナ クエリは外部クエリと呼ばれます。
- サブクエリは使いやすく、柔軟性が高く、クエリを構成する単一の論理コンポーネントに簡単に分解できるため、次のような場合に非常に役立ちます。 テスト そしてクエリをデバッグします。
- MySQL は、スカラー、行、テーブルの 3 種類のサブクエリをサポートします。
- スカラー サブクエリは XNUMX つの行と XNUMX つの列のみを返します。
- 行サブクエリは単一行のみを返しますが、複数の列を含めることができます。
- テーブルのサブクエリは複数の行と列を返すことができます。
- サブクエリは、INSERT、UPDATE、DELETE クエリでも使用できます。
- パフォーマンスの問題のため、複数のテーブルからデータを取得する場合は、サブクエリではなく JOIN を使用することを強くお勧めします。サブクエリは、正当な理由がある場合にのみ使用してください。