English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、SQLでクエリを別のクエリに埋め込む方法を学びます。
子クエリ、もしくはネストクエリ、またはサブセレクションとも呼ばれるのは、SELECT別のSQLクエリに埋め込まれています。 WHERE または HAVING子句のクエリ。子クエリから返されるデータは、外部文で使用される文字値と同じ方法で使用されます。
子クエリは、別のクエリの結果に依存するクエリを処理するための簡単で効果的な方法を提供します。彼らはほぼ通常のSELECT文と同じですが、制限はほとんどありません。最も重要なポイントは以下の通りです:
子クエリは常に括弧内に表示される必要があります。
子クエリではSELECTを使用することはできません。 *を使用することができますが、参照されたテーブルが1列しかない場合を除きます。行比較を行う場合は、複数の列を返す子クエリを使用することができます。
子クエリは、UNION。SELECT文は1つのみ許可されます。
子クエリは最もよくSELECT文とともに使用されることができますが、INSERT、UPDATEまたはDELETE文の中で使用されるか、別の子クエリの中で使用されます。
以下の文は、order_valueが5000ドルの顧客の詳細情報が返されます。また、子クエリでキーワードDISTINCT結果セットから重複のcust_id値が排除されました。
SELECT * FROM customers WHERE cust_id IN (SELECT DISTINCT cust_id FROM orders WHERE order_value > 5000);
ヒント:子クエリは、単一の値、単一の行、単一の列、または1行以上の行や1列以上の列を含むテーブルを返すことができます。
子クエリは、INSERT文とともに使用することもできます。以下はその例です:
INSERT INTO premium_customers SELECT * FROM customers WHERE cust_id IN (SELECT DISTINCT cust_id FROM orders WHERE order_value > 5000);
上記の文は、子クエリから返されるデータを使用して、order_valueが5000ドルの顧客。
ヒント:参照に関するSQLテーブルクローンのチュートリアルを参照して、INSERT...SELECT文を使用して、別のテーブルから複数の行を速やかにテーブルに挿入する方法を学びましょう。
あなたは、子クエリとUPDATE文を組み合わせて、テーブルの単一の列または複数の列を更新することができます。以下のように示されます:
UPDATE orders SET order_value = order_value + 10 WHERE cust_id IN (SELECT cust_id FROM customers WHERE postal_code = 75016);
を通じて現在の注文価値を増やして、10ドル、上記の文は、郵便番号が75016の地域の顧客の注文価値。
同様に、子クエリとDELETE文を組み合わせて、テーブルから行を1行または複数行削除することができます。以下のように示されます:
DELETE FROM orders WHERE order_id IN (SELECT order_id FROM order_details WHERE product_id = 5);
上記の例のSQL文は、以下のように含むproduct_id為5の製品の注文テーブルからこれらの注文を削除します。