WITH AS短语,也叫做子查询部分,用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。这个语句算是公用表表达式(CTE)。
with A as (select * from table_name where field is not null)
select * from A;
先执行 select * from table_name where field not null 得到一个结果,将这个结果记录为A,再执行select * from A 语句,可以理解为一个临时变量。注意,第一行和第二行没有符号
一个别名
with A as (select * from table_name)
多个别名
with
A as (select * from table_name1)
B as (select * from table_name2)
C as (select * from table_name3)
注意
- with子句只能被select查询块引用;
- with查询的结果列有别名,引用的时候必须使用别名或*;
- with子句与查询之间不能有逗号,只通过右括号分割,with 子句的查询须用括号括起来;
- with子句的返回结果存到用户的临时表空间中,只做一次查询,反复使用,提高效率;