Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wenn kein 'Sortieren nach' angegeben ist, welche Reihenfolge wählt eine Abfrage für Ihren Datensatz aus?

Wenn Sie keinen ORDER BY angeben , dann gibt es NO ORDER definiert.

Die Ergebnisse können in beliebiger Reihenfolge zurückgegeben werden - und das kann sich im Laufe der Zeit auch ändern.

Es gibt keine "natürliche Ordnung" oder ähnliches in einer relationalen Datenbank (zumindest in allem, was ich weiß). Die einzige Möglichkeit, eine zuverlässige Bestellung zu erhalten, ist explizit Angabe eines ORDER BY Klausel.

Aktualisierung: für diejenigen, die mir immer noch nicht glauben - hier sind zwei hervorragende Blog-Posts, die diesen Punkt veranschaulichen (mit Code-Beispielen!):

  • Conor Cunningham (Architekt im Core SQL Server Engine-Team):Kein Sicherheitsgurt – Bestellung ohne ORDER BY erwartet
  • Alexander Kuznetsov:Ohne ORDER BY gibt es keine Standard-Sortierreihenfolge (Post im Webarchiv)