Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Können Sie eine if-Anweisung in ORDER BY einfügen?

Nun, Sie können den IF Funktion in MySQL (Beachten Sie die Betonung auf function da es auch ein nicht verwandtes IF gibt Erklärung )...:

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

In diesem Fall scheint es jedoch die bessere Wahl zu sein (aus Sicht der Flexibilität), CASE Erklärung :

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

Beachten Sie, dass der gesamte Block von CASE bis END ist als eine "Einheit" zu betrachten. Das Ergebnis davon ist das, wonach Sie versuchen zu sortieren (daher der ASC kommt nach dem Block, anstatt innerhalb davon)...