Jus*_*ner 41 sql-server select sql-order-by
以下SQL来自Itzik Ben-Gan,用于生成数字表.这个order by (select null)部分是什么意思?谢谢.
DECLARE @number_of_numbers INT;
SELECT @number_of_numbers = 100000;
WITH a AS ( SELECT 1 AS i
UNION ALL
SELECT 1
),
b AS ( SELECT 1 AS i
FROM a AS x ,
a AS y
),
c AS ( SELECT 1 AS i
FROM b AS x ,
b AS y
),
d AS ( SELECT 1 AS i
FROM c AS x ,
c AS y
),
e AS ( SELECT 1 AS i
FROM d AS x ,
d AS y
),
f AS ( SELECT 1 AS i
FROM e AS x ,
e AS y
),
numbers
AS ( SELECT TOP ( @number_of_numbers )
ROW_NUMBER() OVER ( ORDER BY ( SELECT NULL
) ) AS number
FROM f
)
SELECT *
FROM numbers;
Run Code Online (Sandbox Code Playgroud)
谢谢!
usr*_*usr 73
ROW_NUMBER在ORDER BY语法上需要一个子句.没有一个你不能使用它.SELECT NULL是一个黑客在没有强制执行任何特定订单时关闭错误.在这种情况下,我们不需要强制执行任何订单,因此最快的选择是使用SELECT NULL.
优化器可以看到这个技巧,因此它没有运行时成本(通过查看执行计划可以轻松验证此声明).
| 归档时间: |
|
| 查看次数: |
17189 次 |
| 最近记录: |