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

标签 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

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

谢谢!

最佳答案

那是一个 common table expression .这些用作单个查询的临时结果集。以下查询将它们视为一个 View 。你可以用它们做一些巧妙的事情,比如递归!

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

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

关于分号,请查看this回答一个非常有用的提示 - 为什么你应该总是在 CTE 前加上分号。

关于sql - sql中的 "with [alias] as"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155639/

相关文章:

mysql - 使用 Junction Table 加入 MANY to MANY

MySQL 事务/提交查询

sql - 如何组合 Count 和 Min 函数

c# - 如何使用 sql 查询在 SQL Server 中存储来自 C# 的哈希值

MySQL - 从一周开始日期选择一周的数据

mysql - SQL 表计数和连接

sql - 查询计数帮助

c# - 在 SSIS 中使用 C# 从 JSON API 读取

linux - 如何排除第一列和第二列具有相同值的行?

php - 使用多级父->子数组创建单个 SELECT