Maison  >  Article  >  base de données  >  Comment trier les résultats de la base de données par différentes colonnes en fonction d'une condition ?

Comment trier les résultats de la base de données par différentes colonnes en fonction d'une condition ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-18 21:11:02818parcourir

How to Sort Database Results by Different Columns Based on a Condition?

Comprendre l'ordre conditionnel avec ORDER BY

Dans les requêtes de base de données, la clause ORDER BY vous permet de trier les résultats de votre requête dans un format spécifié commande. Cependant, dans certains cas, vous devrez peut-être utiliser un ordre conditionnel en fonction de la valeur d'une colonne particulière.

Problème : trier par différentes colonnes en fonction du type

Considérez le scénario où vous disposez d'un tableau avec une colonne appelée "Type" qui détermine si la ligne correspond à un membre ou à un groupe. Vous souhaitez trier les résultats de telle sorte que les lignes des membres soient triées par leur nom de famille (LNAME) par ordre croissant, tandis que les lignes du groupe soient triées par leur nom de groupe (GROUPNAME) par ordre croissant.

Tentative incorrecte : Utilisation d'opérateurs logiques

La tentative fournie utilise des opérateurs logiques (if, ou) pour créer l'instruction conditionnelle, ce qui entraîne une requête incorrecte :

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC

Solution : Utilisation de la fonction IF ou de l'instruction CASE

Pour obtenir cet ordre conditionnel, vous pouvez utiliser soit la fonction IF, soit l'instruction CASE :

Fonction IF :

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC

Ceci utilise la fonction IF pour déterminer quelle colonne utiliser pour le tri en fonction de la valeur de la colonne TYPE.

Instruction CASE :

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC

Ceci utilise l'instruction CASE pour évaluer la valeur de la colonne TYPE et renvoyer la colonne appropriée pour le tri. La clause ELSE avec la valeur 1 garantit que les lignes de types inconnus sont triées jusqu'à la fin.

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!

Déclaration:
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