sql >> Database >  >> RDS >> Mysql

Kun je een if-statement toevoegen in ORDER BY?

Welnu, je kunt de IF functie in MySQL (Let op de nadruk op function aangezien er ook een niet-gerelateerde IF is verklaring )...:

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

In dit geval lijkt de betere keuze (vanuit het oogpunt van flexibiliteit) echter de CASE verklaring :

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

Merk op dat het hele blok van CASE tot END moet worden beschouwd als een enkele "eenheid". Het resultaat hiervan is waar u op probeert te sorteren (vandaar de ASC komt na het blok, in plaats van erin)...



  1. Wat is het verschil tussen precisie en schaal?

  2. Hoe de sortering van een kolom in SQL Server (T-SQL) te tonen

  3. Recursieve query in SQL Server

  4. Hoe dwing ik Postgres om een ​​bepaalde index te gebruiken?