Das folgende SQL stammt von Itzik Ben-Gan, das zum Generieren einer Zahlentabelle verwendet wird. Was bedeutet der order by (select null)
Teil? Vielen Dank.Was bedeutet "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;
Vielen Dank!
Es kann auch als eine Absichtserklärung verwendet werden, wenn es nicht wirklich benötigt wird. Zum Beispiel raten sie in Micrsoft's Trainingskit-Buch "Microsoft SQL Server 2012 abfragen", sie zu einer gültigen Abfrage hinzuzufügen, wie "... wenn Sie wirklich nach drei beliebigen Zeilen suchen, ist es vielleicht eine gute Idee, eine ORDER hinzuzufügen BY-Klausel mit dem Ausdruck (SELECT NULL), um Menschen wissen zu lassen, dass Ihre Wahl beabsichtigt ist und nicht ein Versehen. " –