2

所以我在工作中遇到了以下内容,我可以立即知道它的用途,但我想找到它的任何文档并且在网上找不到任何东西!

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

这在我看来就像它的分页功能。但是,我不确切知道我在 sql 语法中查看的结构。有谁认识这种语法,你能指出我可以在哪里阅读更多关于它的信息吗?

谢谢!

4

1 回答 1

6

这是一个常见的表表达式。这些用作单个查询的临时结果集。以下查询将它们视为视图。你可以用它们做一些简洁的事情,比如递归!

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

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

关于分号,请查看答案以获得一个非常有用的提示 - 为什么您应该始终在 CTE 前加上分号。

于 2013-04-22T20:01:56.110 回答