WITH Extracted_Sessions ( a,b ) AS
(
select a,b from db.tblnm
)
这个 SQL 是做什么的?有人可以解释一下吗?
这称为“公用表表达式”。如果我没记错的话,SQL 99 中已经引入了一个 SQL 特性。
它与派生表非常相似。你的例子相当于
select a,b
from (
select a,b from db.tblnm
) as Extracted_Sessions
主要区别在于您可以在查询中多次使用 CTE,而对于派生表,您需要每次都重复基础查询,例如:
WITH Extracted_Sessions ( a,b ) AS
(
select a,b from db.tblnm
)
select *
from Extracted_Sessions e1
join Extracted_Sessions e2 on e1.a = e.2b
(注意这可能没有意义,只是为了证明您可以多次访问 CTE)。
Postgres 手册有一个很好的 CTE 教程:http ://www.postgresql.org/docs/current/static/queries-with.html
猜测这是一个通用表表达式:它是一个很像临时表的结构:
将名称Extracted_Sessions
与列一起使用a
并b
代替查询select a, b from db.tblnm
......做一些事情,Extracted_Sessions
就好像它是真实的一样。
常用于构建递归查询。