MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのFROM句でサブクエリ(派生テーブル)を使う方法をわかりやすく解説

MySQLでは、SELECT文のFROM句の中にサブクエリ(副問い合わせ)を記述できます。このようなサブクエリは「派生テーブル(Derived Table)」とも呼ばれ、サブクエリの実行結果をあたかも一時的なテーブルであるかのように扱い、その上からさらに条件を指定してデータを取得できる強力な手法です。

基本構文

SELECT ... FROM(サブクエリ) [AS] 別名 ...;

FROM句内のサブクエリには必ず別名(エイリアス)を付ける必要があります。別名がないとエラーになるため、「AS」は省略可能ですが、名前自体は必須です。

サンプルデータの確認

動作を理解するために、次のテーブル「cars」のデータを使用します。

mysql> Select * from Cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
| 1    | Nexa         | 750000  |
| 2    | Maruti Swift | 450000  |
| 3    | BMW          | 4450000 |
| 4    | VOLVO        | 2250000 |
| 5    | Alto         | 250000  |
| 6    | Skoda        | 1250000 |
| 7    | Toyota       | 2400000 |
| 8    | Ford         | 1100000 |
+------+--------------+---------+
8 rows in set (0.02 sec)

FROM句でサブクエリを使ったクエリ例

それでは実際に、FROM句内でサブクエリを使用したクエリを見てみましょう。サブクエリ側で列名を「Id_New」「Name_New」「Price_New」に変更し、その結果セットに対して外側のクエリで価格が50万より大きいレコードだけを絞り込んでいます。

mysql> Select Id_New, Name_New, Price_New FROM (SELECT Id as Id_New, Name as Name_New, Price as Price_New FROM Cars) as c Where Price_New > 500000;
+--------+----------+-----------+
| Id_New | Name_New | Price_New |
+--------+----------+-----------+
| 1      | Nexa     | 750000    |
| 3      | BMW      | 4450000   |
| 4      | VOLVO    | 2250000   |
| 6      | Skoda    | 1250000   |
| 7      | Toyota   | 2400000   |
| 8      | Ford     | 1100000   |
+--------+----------+-----------+
6 rows in set (0.00 sec)

ポイントまとめ

  • サブクエリの結果は、外側のクエリから見ると通常のテーブルと同じように扱えます。
  • サブクエリ内で AS を使って列名やテーブル名に別名を付けると、可読性が向上し、後続の処理で参照しやすくなります。
  • 複雑な集計や結合を行った中間結果に対して、さらにフィルタリングやソートを行いたい場合に特に有効です。
  1. MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説

    MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId

  2. MySQLストアドプロシージャでSELECT INTOを使ってテーブルからOUTパラメータにデータを読み込む方法

    MySQLのストアドプロシージャでテーブルからデータを読み取り、OUTパラメータに格納するには、SELECT INTO構文を使用します。この記事では、テーブルの作成からストアドプロシージャの呼び出しまで、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1860 ( Amount int ); Query OK, 0 rows affected (0.00 sec) 2. レコードの挿入 INSERTコマンドを使用して、テーブルにい