Mysql
 sql >> Database >  >> RDS >> Mysql

Puoi aggiungere un'istruzione if in ORDER BY?

Bene, puoi usare IF funzione in MySQL (notare l'enfasi su function poiché esiste anche un IF dichiarazione )...:

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

Tuttavia, in questo caso sembra che la scelta migliore (dal punto di vista della flessibilità) sarebbe CASE dichiarazione :

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

Nota che l'intero blocco da CASE a END è da considerarsi come un'unica "unità". Il risultato è ciò che stai cercando di confrontare (da qui perché il ASC viene dopo il blocco, piuttosto che all'interno di esso)...