Ich lese gerade alten Code bei der Arbeit durch und habe festgestellt, dass es mehrere Ansichten mit einer order by 1Klausel 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 BYin 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.
TOPvorhanden, und SSMS fügt gerne hinzu TOP 100 PERCENT.
CHECKEinschränkung in a, CREATE TABLEaber es berücksichtigt sie nicht wirklich - es wird nie wirklich überprüft! Die Frage ist, haben diese SQL - Produkte immer ehren die ORDER BYin Aussicht zB wenn in einer Abfrage verwendet , dass auch eine ORDER BYnicht 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.