Ich lese gerade alten Code bei der Arbeit durch und habe festgestellt, dass es mehrere Ansichten mit einer order by 1
Klausel gibt. Was bringt das?
Beispiel:
Create view v_payment_summary AS
SELECT A.PAYMENT_DATE,
(SELECT SUM(paymentamount)
FROM payment B
WHERE PAYMENT_DATE = B.PAYMENT_DATE
and SOME CONDITION) AS SUM_X,
(SELECT SUM(paymentamount)
FROM payment B
WHERE PAYMENT_DATE = B.PAYMENT_DATE
and SOME OTHER CONDITION) AS SUM_Y
FROM payment A
ORDER BY 1;
ORDER BY
in einem zu haben VIEW
. Standard SQL erlaubt es nicht. SQL Server hat es seit 2005 verboten. Bei SQL-Implementierungen, die dies zulassen, ist das Verhalten weitgehend undokumentiert und kontraintuitiv. Mit anderen Worten, auf jeden Fall zu vermeiden.
TOP
vorhanden, und SSMS fügt gerne hinzu TOP 100 PERCENT
.
CHECK
Einschränkung in a, CREATE TABLE
aber es berücksichtigt sie nicht wirklich - es wird nie wirklich überprüft! Die Frage ist, haben diese SQL - Produkte immer ehren die ORDER BY
in Aussicht zB wenn in einer Abfrage verwendet , dass auch eine ORDER BY
nicht zweimal sortiert werden? Dokumentieren sie überhaupt das Verhalten oder müssen Sie die Ausführungspläne überprüfen, um es auszuarbeiten? Ich denke, wir kennen die Antworten;)
ORDER BY 1
... mithilfe eines Cross-Apply-Tricks entdeckt, bei dem Sie einen leeren Alias wünschen. Leider ist der Code zB zu groß für einen Kommentar, daher habe ich ihn als Antwort unter FYI gepostet.