首批通过分布式安全可靠测评,为关键业务系统打造
WITH CLAUSE
更新时间:2026-07-02 15:33:15
本节将介绍带有 WITH CLAUSE 子句的 SELECT。
描述
如果查询语句中有多个相同的子查询,可以把相同的子查询放在 WITH CLAUSE 中作为公共表达式,在主体查询中直接引用即可。
语法
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