Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ネストされたクエリ | ネストされたサブクエリ
中級SQL

ネストされたクエリ

メニューを表示するにはスワイプしてください

学校の管理者はあなたの最近の成果に満足しており、今後の進展を期待しています。

彼らが夏休みに入る中、あなたには新しい手法の探求やSQLスキルの向上の機会があります。

今回の注目点は、SQLの重要な概念であるネストされたクエリです。

Note
定義

ネストされたクエリ、またはネストされたサブクエリは、SQLにおいてクエリの中に別のクエリが含まれる構造。これらの構成要素は、データのフィルタリング、計算、取得など多様な操作を可能にし、しばしばサブクエリの統合が必要となる。

会社データベースの例を見てみましょう。会社の成長に伴い、新たにdepartmentテーブルが追加されました。これにより、データベースの仕組みが変化します。

新しいテーブルの構造を確認し、その役割を把握しましょう。

新しいテーブルには部門、その種類、および予算が含まれています。また、employee テーブルには、各従業員が所属する部門情報が記録されています。

ネストされたクエリを使用して、予算が500,000ドル以下の部門で働く従業員を取得する例を考えます:

1234567
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )

WHERE句は、部門名内側のクエリで取得されたテーブルに存在することを指定するために使用。

このクエリを2つのクエリに分解して、その動作を確認。まず、$500,000以下の予算を持つ部門名を取得(内側のクエリ):

123
SELECT name FROM department WHERE budget <= 500000

取得した結果を考慮し、これらの部門の従業員に関する情報を取得するための2つ目のクエリを作成:

12345
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )

このクエリの結果は、最初のクエリと同じになります。

以下はステップごとの説明です:

  1. 内側のクエリが必要な部門のnamesを取得;

  2. WHERE句で、これらの部門が内側のクエリのテーブルに存在するかを確認;

  3. 必要な結果を取得。

内側のクエリの基本的な構文は次の通りです:

SELECT columns
FROM table_1
WHERE column_name IN (
  SELECT column
  FROM table_2
  other clauses
)

ネストされたクエリを使用する際は、次の重要なポイントに注意:

  1. サブクエリの単一結果:ネストされたクエリは1つのカラムのみを返すこと。比較で使用する場合は、理想的には単一の値を返す必要がある。これは=, >, <, >=, <=, <>などの演算子で重要;

  2. データ型:返されるカラムのデータ型が比較対象のカラムと一致していること。エラーを防ぐため;

  3. 最適化:ネストされたクエリは、メインクエリの各行ごとに実行される場合、遅くなることがある;

  4. IN演算子の使用:ネストされたクエリでは、IN演算子を使ってサブセット内の値を確認することが多い。より複雑な条件には比較演算子も使用可能。

1. SQLにおけるネストされたクエリとは何ですか?

2. ネストされたクエリで部分集合内の値を確認するためによく使われるSQL演算子はどれですか?

3. ネストされたクエリが返す列のデータ型が比較対象の列と一致することが重要なのはなぜですか?

question mark

SQLにおけるネストされたクエリとは何ですか?

正しい答えを選んでください

question mark

ネストされたクエリで部分集合内の値を確認するためによく使われるSQL演算子はどれですか?

正しい答えを選んでください

question mark

ネストされたクエリが返す列のデータ型が比較対象の列と一致することが重要なのはなぜですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

ネストされたクエリ

学校の管理者はあなたの最近の成果に満足しており、今後の進展を期待しています。

彼らが夏休みに入る中、あなたには新しい手法の探求やSQLスキルの向上の機会があります。

今回の注目点は、SQLの重要な概念であるネストされたクエリです。

Note
定義

ネストされたクエリ、またはネストされたサブクエリは、SQLにおいてクエリの中に別のクエリが含まれる構造。これらの構成要素は、データのフィルタリング、計算、取得など多様な操作を可能にし、しばしばサブクエリの統合が必要となる。

会社データベースの例を見てみましょう。会社の成長に伴い、新たにdepartmentテーブルが追加されました。これにより、データベースの仕組みが変化します。

新しいテーブルの構造を確認し、その役割を把握しましょう。

新しいテーブルには部門、その種類、および予算が含まれています。また、employee テーブルには、各従業員が所属する部門情報が記録されています。

ネストされたクエリを使用して、予算が500,000ドル以下の部門で働く従業員を取得する例を考えます:

1234567
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )

WHERE句は、部門名内側のクエリで取得されたテーブルに存在することを指定するために使用。

このクエリを2つのクエリに分解して、その動作を確認。まず、$500,000以下の予算を持つ部門名を取得(内側のクエリ):

123
SELECT name FROM department WHERE budget <= 500000

取得した結果を考慮し、これらの部門の従業員に関する情報を取得するための2つ目のクエリを作成:

12345
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )

このクエリの結果は、最初のクエリと同じになります。

以下はステップごとの説明です:

  1. 内側のクエリが必要な部門のnamesを取得;

  2. WHERE句で、これらの部門が内側のクエリのテーブルに存在するかを確認;

  3. 必要な結果を取得。

内側のクエリの基本的な構文は次の通りです:

SELECT columns
FROM table_1
WHERE column_name IN (
  SELECT column
  FROM table_2
  other clauses
)

ネストされたクエリを使用する際は、次の重要なポイントに注意:

  1. サブクエリの単一結果:ネストされたクエリは1つのカラムのみを返すこと。比較で使用する場合は、理想的には単一の値を返す必要がある。これは=, >, <, >=, <=, <>などの演算子で重要;

  2. データ型:返されるカラムのデータ型が比較対象のカラムと一致していること。エラーを防ぐため;

  3. 最適化:ネストされたクエリは、メインクエリの各行ごとに実行される場合、遅くなることがある;

  4. IN演算子の使用:ネストされたクエリでは、IN演算子を使ってサブセット内の値を確認することが多い。より複雑な条件には比較演算子も使用可能。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1
some-alt