Comment commander une requête MySQL en utilisant ORDER by

Le retour d'une requête dans MySQL est arbitraire et imprévisible.

Étape 1

Formez la commande SELECT de base pour renvoyer les lignes qui vous intéressent. À ce stade, l'ordre dans lequel ils sont renvoyés n'est pas important. Dans cet exemple, une base de données de clients est consultée pour obtenir une liste de clients avec des soldes négatifs. Exemple: SELECT * FROM clients WHERE solde <0.0;

Étape 2

Ajoutez une clause ORDER BY. Cela indiquera au serveur MySQL de trier les lignes par colonne. Par exemple, si vous souhaitez voir tous les comptes en attente dans l'ordre de votre solde, vous pouvez ajouter "Solde ORDER BY" à la fin de la requête. Exemple: SELECT * FROM clients WHERE balance <0.0 ORDER BY balance;

Étape 3

Il définit dans quelle direction ordonner, car l'ordre des lignes retournées pourrait toujours ne pas être significatif. Les lignes peuvent être renvoyées par ordre croissant ou décroissant.

Étape 4

Utilisez ASC ou DESC. En utilisant ASC, vous allez trier les données afin que vous puissiez voir le plus petit nombre en premier. En utilisant DESC, vous allez trier les données de manière à pouvoir voir d’abord le plus grand nombre. Dans cette requête, les clients avec le solde négatif le plus élevé sont d'abord recherchés. ORDER BY renverra les ensembles avec le plus grand nombre négatif (le plus petit nombre) en haut. Exemple: SELECT * FROM clients WHERE balance <0.0 ORDER BY balance ASC;

Étape 5

Ordre par plusieurs colonnes, car vous trouverez parfois de grands groupes de lignes qui ont été ordonnées dans le même nombre. Par exemple, s'il y a 100 clients dans votre base de données avec un solde égal à 0, ils apparaissent dans un ordre arbitraire. Il est préférable d’avoir au moins deux critères de classification pour ce type de situation.

Étape 6

Il utilise plusieurs critères de classification séparés par des virgules. Ici, les clients sont classés par ordre alphabétique par nom après avoir été commandés par la balance. Exemple: SELECT * FROM clients WHERE balance <0.0 ORDER BY balance, nom ASC;