【问题标题】:What is a Common Table Expression used for?公用表表达式的用途是什么?
【发布时间】:2013-04-03 19:51:32
【问题描述】:
WITH Extracted_Sessions ( a,b ) AS 
(
   select a,b from db.tblnm
)

这个 SQL 是做什么的?有人能解释一下吗?

【问题讨论】:

  • 查找公用表表达式或 CTE。它是可以在后面的 SELECT 中使用的表达式的替代名称。

标签: sql ansi-sql


【解决方案1】:

这称为“公用表表达式”。如果我没记错的话,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

【讨论】:

    【解决方案2】:

    猜测这是一个通用表表达式:它是一个很像临时表的结构:

    使用名称 Extracted_Sessions 和列 a 和 b 代替查询 select a, b from db.tblnm ... 在 Extracted_Sessions 上做一些事情,就好像它是真实的一样。

    常用于构建递归查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-18
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2016-06-14
      • 1970-01-01
      • 2021-05-08
      相关资源
      最近更新 更多