Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Lorsqu'aucun "Trier par" n'est spécifié, quel ordre une requête choisit-elle pour votre jeu d'enregistrements ?

Si vous ne spécifiez pas de ORDER BY , alors il n'y a PAS DE COMMANDE défini.

Les résultats peuvent être renvoyés dans un ordre arbitraire - et cela peut également changer avec le temps.

Il n'y a pas "d'ordre naturel" ou quelque chose comme ça dans une base de données relationnelle (du moins dans tout ce que je sais). La seule façon d'obtenir une commande fiable est de explicitement en spécifiant un ORDER BY clause.

Mise à jour : pour ceux qui ne me croient toujours pas - voici deux excellents articles de blog qui illustrent ce point (avec des exemples de code !) :

  • Conor Cunningham (architecte de l'équipe Core SQL Server Engine) :Pas de ceinture de sécurité - Commande attendue sans ORDER BY
  • Alexander Kuznetsov :Sans ORDER BY, il n'y a pas d'ordre de tri par défaut (publication dans les archives Web)