Can you add an if statement in ORDER BY?

Well, you can use the IF function in MySQL (Note the emphasis on function since there’s also an unrelated IF statement)…:

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

However, in this case it seems the better choice (From a flexibility standpoint) would be the CASE statement:

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

Note that the entire block from CASE to END is to be considered as a single “unit”. The result of which is what you’re trying to sort against (Hence why the ASC comes after the block, rather than inside of it)…

Leave a Comment