Maison > base de données > tutoriel mysql > le corps du texte

Comment trier les données dans MySQL

WBOY
Libérer: 2023-05-30 22:10:57
avant
5190 Les gens l'ont consulté

1. Utilisation de base du tri

  1. Lors de l'interrogation de données, si aucune opération de tri n'est utilisée, par défaut, SQL organisera les résultats de la requête dans l'ordre dans lequel les tuples sont ajoutés.

  2. Pour effectuer des opérations de tri en SQL, vous pouvez utiliser le mot-clé ORDER BY…. Après ce mot-clé, vous pouvez ajouter le mot-clé ASC (ascend) pour indiquer l'ordre croissant (de petit à grand), et DESC (descend) pour indiquer l'ordre décroissant (de grand à petit).

  3. Si ASC ou DESC n'est pas ajouté après le mot-clé ORDER BY... pour indiquer l'ordre croissant ou décroissant, SQL utilisera par défaut l'ordre ASC croissant. Comme indiqué dans le code suivant :

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary;
Copier après la connexion

Résultats de la requête :

Comment trier les données dans MySQL

[Exemple 1] Interrogez le employee_id et le last_name des employés dans la table des employés <code>employees<. /code> , informations salary et department_id. Et triez par salaire du plus grand au plus petit (ordre décroissant). employees 中的员工的 employee_idlast_namesalarydepartment_id 信息。并按 salary 从大到小 (降序) 进行排列。

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;
Copier après la connexion

查询结果:

Comment trier les données dans MySQL

二、 使用列的别名来排序

在SQL中,可以使用字段 (列) 的别名来进行排序。因为有时我们需要计算表中没有的字段 (如年薪 annual_salary ) ,或者有些字段名字实在是太长了,使用简短的别名可以提高我们编程的效率。如下例子所示:

【例子】查询员工表 employees 中的员工的 employee_idlast_name 、月薪 salary 和 年薪 annual_salary 信息。并按 annual_salary 从大到小 (降序) 进行排列。

SELECT employee_id, last_name, salary, 
salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary"
FROM employees
ORDER BY annual_salary DESC;
Copier après la connexion

查询结果:

Comment trier les données dans MySQL

【注意】

  • 格式要求,WHERE 必须声明在 FROM 后。

  • 列的别名只能在 ORDER BY... 中使用,不能在 WHERE 中使用。**如果在 WHERE 中使用列的别名,SQL会报错。那为什么MySQL中列的别名不能在 WHERE 中使用呢?原因如下:

【原因】

SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id IN(50, 60, 70)
ORDER BY department_id DESC;
Copier après la connexion
  • 在SQL中,查询语句的执行顺序不遵循上述代码从第1行到第4行从上往下的顺序。而是首先执行第2行 FROM... ,先去找要查询的表。

  • 再执行第3行 WHERE... ,去筛选符合条件的元组。

  • 然后执行第1行 SELECT... ,显示你要查询的字段。由于在这一步才会生成列的别名,因此无法在上一步中使用它提供的 WHERE 语句。但是可以提供给下一步的 ORDER BY 来使用。

  • 最后才是第4行 ORDER BY... ,按某列排序。这个时候可以使用列的别名来进行排序。

查询结果:

Comment trier les données dans MySQL

三、 二级排序

在实际生活中,有时候我们需要在按照一个字段排序后再按照另一个字段排序。在SQL中我们可以使用二级排序来实现。使用方法请看下面例子:

【例子1】查询员工表 employees 中的员工的员工ID employee_id 、名字 last_name 、月薪 salary 和部门ID department_id 。并先按部门ID department_id 降序排列,再按 salary 从大到小 (降序) 进行排列。

SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY department_id DESC, salary DESC;
Copier après la connexion

查询结果:

Comment trier les données dans MySQL

依次类推,可以在 ORDER BYrrreee

Résultats de la requête : 🎜🎜Comment MySQL trie-t-il les données🎜 🎜 2. Utilisez des alias de colonne pour trier 🎜🎜En SQL, vous pouvez utiliser des alias de champ (colonne) pour trier. Parce que parfois nous devons calculer des champs qui ne sont pas dans le tableau (comme le salaire annuel annual_salary), ou que certains noms de champs sont vraiment trop longs, l'utilisation d'alias courts peut améliorer l'efficacité de notre programmation. Comme le montre l'exemple suivant : 🎜🎜[Exemple] Recherchez le employee_id, le last_name et le salaire mensuel salary des employés dans la table des employés. Informations sur le employés> et le salaire annuel annual_salary. Et triez par annual_salary du plus grand au plus petit (ordre décroissant). 🎜rrreee🎜Résultats de la requête : 🎜🎜Comment MySQL trie-t-il les données🎜 🎜 【Remarque】🎜
    🎜🎜Exigences de format, WHERE doit être déclaré après FROM. 🎜🎜🎜🎜Les alias de colonnes ne peuvent être utilisés que dans ORDER BY..., pas dans WHERE. **Si vous utilisez des alias de colonne dans WHERE, SQL signalera une erreur. Alors pourquoi les alias de colonnes dans MySQL ne peuvent-ils pas être utilisés dans WHERE ? Les raisons sont les suivantes : 🎜🎜
🎜【Raison】🎜rrreee
    🎜🎜En SQL, l'ordre d'exécution des instructions de requête ne suit pas le code ci-dessus de la ligne 1 à la ligne 4 Ordre de haut en bas. Au lieu de cela, exécutez d’abord la ligne 2 FROM... et recherchez d’abord la table à interroger. 🎜🎜🎜🎜Exécutez à nouveau la ligne 3 WHERE... pour filtrer les tuples qui remplissent les conditions. 🎜🎜🎜🎜Ensuite, exécutez la ligne 1 SELECT... pour afficher les champs que vous souhaitez interroger. Étant donné que l'alias de colonne est généré uniquement à cette étape, l'instruction WHERE qu'il fournit ne peut pas être utilisée à l'étape précédente. Mais il peut être utilisé à l’étape suivante de ORDER BY. 🎜🎜🎜🎜La dernière ligne est ORDER BY... , qui est triée selon une certaine colonne. À l’heure actuelle, vous pouvez utiliser des alias de colonnes pour le tri. 🎜🎜
🎜Résultats de la requête : 🎜🎜Comment MySQL trie-t-il les données ? 🎜🎜3. Tri de deuxième niveau🎜🎜Dans la vraie vie, nous devons parfois trier selon un champ puis trier selon un autre champ. En SQL, nous pouvons utiliser le tri secondaire pour y parvenir. Veuillez consulter l'exemple d'utilisation suivant : 🎜🎜[Exemple 1] Recherchez l'ID de l'employé employee_id, le nom last_name et le salaire mensuel des employés dans la table des employés employés salaire et numéro de service department_id. Et triez d'abord par ID de service department_id par ordre décroissant, puis triez par salaire de grand à petit (ordre décroissant). 🎜rrreee🎜Résultats de la requête : 🎜🎜Comment MySQL trie-t-il les données🎜 🎜 Par analogie, vous pouvez ajouter une virgule après ORDER BY pour obtenir un tri de troisième, quatrième niveau.... 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal