什么是"with [alias] as"在sql中?

IWr*_*pps 2 sql sql-server select

所以我在工作中遇到了以下内容,我可以立即告诉它是什么,但我想找到它的任何文档,在网上找不到任何东西!

with details as
(
    select *,
    row_number() over (order by CREATED_DATE) as [Row]
    from
    (
        select top 10 * from MyTable
    ) t
)
select *
from details
where [Row] > @lowLimit and [Row] < @highLimit
Run Code Online (Sandbox Code Playgroud)

这看起来像它的分页功能.但是,我不知道我在sql语法中究竟看到了什么结构.有没有人认识到这种语法,你能指出我可以在哪里阅读更多关于它的内容吗?

谢谢!

Nic*_*aro 6

这是一个常见的表表达式.这些用作单个查询的临时结果集.它们由以下查询处理,就像视图一样.你可以用它们做一些巧妙的东西,比如递归!

以下是链接中对其功能的简要说明:

  • 创建递归查询.
  • 在不需要一般使用视图时替换视图; 也就是说,您不必将定义存储在元数据中.
  • 通过从标量子选择派生的列或不具有确定性或具有外部访问权限的函数启用分组.
  • 在同一语句中多次引用结果表.

关于分号,请查看这个答案以获得一个非常有用的提示 - 为什么你应该总是用分号来表示CTE.