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

Trier dans MySQL à l'aide de la clause Order By

Ce didacticiel fait partie de la série Apprendre les requêtes SQL de base à l'aide de MySQL. Dans ce tutoriel, nous aborderons les requêtes SQL pour effectuer le tri des lignes de la table dans MySQL en utilisant la clause ORDER BY avec les mots-clés ASC ou DESC pour trier par ordre croissant ou décroissant.

Trier par requête

Le COMMANDER par La clause peut être utilisée pour effectuer un tri sur les lignes du tableau dans l'ordre croissant ou décroissant.

# ORDER BY - Syntax - Default Ascending
SELECT * FROM `table_name` ORDER BY `column_name`;

# ORDER BY - Syntax - Ascending
SELECT * FROM `table_name` ORDER BY `column_name` ASC;

# ORDER BY - Syntax - Descending
SELECT * FROM `table_name` ORDER BY `column_name` DESC;

Explication de la requête

Le ORDER PAR La clause peut être utilisée pour trier les lignes en spécifiant la colonne à utiliser pour le tri. Nous pouvons également utiliser la clause ORDER BY avec WHERE pour effectuer les opérations de filtrage ou de recherche avec tri.

Nous devons spécifier au moins une colonne en utilisant la clause ORDER BY pour trier les lignes. Nous pouvons également spécifier l'ordre de tri des lignes dans l'ordre croissant ou décroissant en utilisant respectivement les mots-clés ASC ou DESC.

Nous pouvons également appliquer plusieurs opérations de tri où le tri ultérieur peut être appliqué en fonction des résultats renvoyés par les opérations de tri qui viennent en premier.

Exemples

Cette section fournit des exemples pour effectuer un tri à l'aide de la clause ORDER BY avec et sans la clause WHERE. Utilisez la requête mentionnée ci-dessous pour créer la table utilisateur avec l'identifiant, le prénom, le nom et les colonnes actives pour stocker les données utilisateur.

# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));

La requête ci-dessous peut être utilisée pour insérer des données dans la table des utilisateurs.

# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 1, 'John', 'Smith', 1 ),
( 2, 'Rick', 'Jones', 1 ),
( 3, 'John', 'Ponting', 0 ),
( 4, 'Harsh', 'Upadhyay', 1 ),
( 5, 'Tajwinder', 'Singh', 0 );

La requête mentionnée ci-dessus insérera 5 lignes dans le tableau ayant l'identifiant, le prénom, le nom et les colonnes actives pour représenter 5 utilisateurs différents.

Nous allons maintenant utiliser la clause ORDER BY sans la clause WHERE pour trier les lignes en utilisant les colonnes de prénom ou de nom de la table utilisateur. Cela peut être fait en utilisant la clause ORDER BY dans MySQL comme indiqué ci-dessous.

# ORDER BY - Ascending
SELECT * FROM `user` ORDER BY `first_name`;
SELECT * FROM `user` ORDER BY `first_name` ASC;

# Result
4 Harsh Upadhyay 1
1 John Smith 1
3 John Ponting 0
2 Rick Jones 1
5 Tajwinder Singh 0


# ORDER BY - Descending
SELECT * FROM `user` ORDER BY `first_name` DESC;

# Result
5 Tajwinder Singh 0
2 Rick Jones 1
1 John Smith 1
3 John Ponting 0
4 Harsh Upadhyay 1


# ORDER BY - Ascending - Multiple
SELECT * FROM `user` ORDER BY `first_name`, `last_name`;

# Result
4 Harsh Upadhyay 1
3 John Ponting 0
1 John Smith 1
2 Rick Jones 1
5 Tajwinder Singh 0

Les requêtes mentionnées ci-dessus effectuent un tri dans l'ordre croissant et décroissant à l'aide de la clause ORDER BY. Nous allons maintenant trier les lignes avec la clause WHERE comme indiqué ci-dessous.

# ORDER BY - Ascending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name`;

# Result
4 Harsh Upadhyay 1
1 John Smith 1
2 Rick Jones 1


# ORDER BY - Descending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name` DESC;

# Result
2 Rick Jones 1
1 John Smith 1
4 Harsh Upadhyay 1

C'est ainsi que nous pouvons utiliser la clause ORDER BY avec et sans la clause WHERE pour trier les lignes de la table pour les colonnes spécifiques.