この記事では、WITH句を含むSELECTについて説明します。
説明
クエリステートメント内に複数の同じサブクエリがある場合、同じサブクエリをWITH句内に共通式として配置し、メインクエリで直接参照することができます。
構文
with_clause_select:
with_clause simple_select
with_clause:
WITH query_table_name [opt_column_alias_name_list] AS ( select_clause )
select_clause:
simple_select | select_clause_set
opt_column_alias_name_list:
(column_name_list)
column_name_list:
column_name [,column_name...]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| query_table_name | サブクエリの名前を指定します。 |
| column_name | 列名を指定します。 |
例
obclient> CREATE TABLE tbl1(col1 INT,col2 INT,col3 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,1,1),(2,2,2),(3,3,3);
Query OK, 3 rows affected
Records: 3 Duplicates: 0 Warnings: 0
/*直接にtbl1テーブルの列名をw_tbl1の列名として使用*/
obclient> WITH w_tbl1 AS(SELECT * FROM tbl1) SELECT * FROM w_tbl1;
+------+------+------+
| COL1 | COL2 | COL3 |
+------+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+------+------+------+
3 rows in set
/*直接にw_tbl1に列名を付ける*/
obclient> WITH w_tbl1(c1,c2,c3) AS(SELECT * FROM tbl1) SELECT * FROM w_tbl1;
+------+------+------+
| C1 | C2 | C3 |
+------+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+------+------+------+
3 rows in set