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

Pouvez-vous ajouter une instruction if dans ORDER BY ?

Eh bien, vous pouvez utiliser le IF fonction dans MySQL (notez l'accent mis sur function car il y a aussi un IF déclaration )... :

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

Cependant, dans ce cas, il semble que le meilleur choix (du point de vue de la flexibilité) serait le CASE déclaration :

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

Notez que le bloc entier de CASE à END doit être considéré comme une seule "unité". Le résultat est ce que vous essayez de trier (d'où la raison pour laquelle le ASC vient après le bloc, plutôt qu'à l'intérieur de celui-ci)...