ネストクエリ
メニューを表示するにはスワイプしてください
学校の管理部門は、私たちの最近の成果に満足しており、今後の進展に意欲的です。
彼らが夏休みに入る中、私たちは新しい手法の探求やSQLスキルの向上に取り組む機会があります。
今回の重点は、SQLの重要な概念であるネストされたクエリです。
ネストされたクエリ、またはネストされたサブクエリは、SQLにおいてクエリの中に別のクエリが含まれる構造です。これらの構造は、データのフィルタリング、計算、取得など多様な操作を可能にし、サブクエリの統合が必要となる場合が多くあります。
会社データベースの例を見てみましょう。会社の成長に伴い、新たにdepartmentテーブルが追加されました。これにより、データベースの仕組みが変化しています。
新しいテーブルの構造を確認し、その役割を見てみましょう。
新しいテーブルには、部門、その種類、および予算が含まれています。また、employee テーブルには、各従業員が所属する部門情報が格納されています。
ここでは、ネストされたクエリを使用して、予算が500,000ドル以下の部門で働く従業員を取得する例を考えます。
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
WHERE 句を使用して、部門名が内側のクエリで取得したテーブルに存在することを指定しています。
このクエリを2つの別々のクエリに分解して、その動作を確認します。まず、予算が500,000ドル以下の部門名を取得します(内側のクエリ):
123SELECT name FROM department WHERE budget <= 500000
取得した結果を考慮して、これらの部門の従業員に関する情報を取得する2つ目のクエリを作成します:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
このクエリの結果は、最初のクエリと同じになります。
手順ごとの説明:
-
サブクエリが必要な部門の
namesを取得; -
WHERE句が、これらの部門がサブクエリのテーブルに存在するかを確認; -
必要な結果が得られる。
サブクエリの基本的な構文:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
ネストされたクエリを使用する際は、次の重要な点に注意:
-
サブクエリの単一結果: ネストされたクエリは1列のみを返す必要がある。比較で使用する場合、理想的には単一の値を返すことが重要。これは
=,>,<,>=,<=,<>などの演算子で特に重要; -
データ型: 返される列のデータ型は、比較対象の列と一致している必要があり、エラーを防ぐ;
-
最適化: ネストされたクエリは遅くなることがあり、特にメインクエリの各行ごとに実行される場合は注意;
-
IN演算子の使用: ネストされたクエリは、サブセット内の値を確認するために
IN演算子をよく使用する。より複雑な条件には比較演算子も利用可能。
1. SQLにおけるネストされたクエリとは何ですか?
2. ネストされたクエリでサブセット内の値を確認するためによく使われるSQL演算子はどれですか?
3. ネストされたクエリによって返される列のデータ型が、比較対象となる列と一致することが重要なのはなぜですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください