sql >> Databáze >  >> RDS >> Mysql

Můžete přidat příkaz if do ORDER BY?

Můžete použít IF funkce v MySQL (Všimněte si důrazu na function protože je zde také nesouvisející IF prohlášení )...:

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

V tomto případě se však zdá, že lepší volbou (z hlediska flexibility) by byl CASE prohlášení :

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

Všimněte si, že celý blok z CASE do END je třeba považovat za jednu „jednotku“. Výsledkem je to, podle čeho se snažíte třídit (proto proč ASC přichází za blok, nikoli uvnitř něj)...



  1. Použití MySQL Galera Cluster Replication k vytvoření geograficky distribuovaného clusteru:Část druhá

  2. Řadit podle data a času v sestupném pořadí?

  3. izolování dílčího řetězce v řetězci před symbolem v SQL Server 2008

  4. PSQLException:ResultSet není správně umístěn, možná budete muset zavolat jako další