2013-01-04 126 views
1

我試圖做到這一點位的代碼:MySQL的分層IF語句

ORDER BY IF(j.groups IS NULL OR j.groups = '', IF(j.title IS NULL, i.title), j.groups) 

英文:爲了通過j.groups第一,如果它存在,然後通過j.title如果eixsts,然後最後通過I.標題。但上面的工作並沒有解決。

+0

NULL應該放在第一位與否? –

+0

你不應該有一個內部'IF'的else子句嗎? – Amadan

回答

1

試試這個:

ORDER BY IF(j.groups IS NULL OR j.groups = '', IFNULL(j.title, i.title), j.groups); 

OR

ORDER BY COALESCE(j.groups, j.title, i.title); 

OR

ORDER BY IF(j.groups IS NULL OR j.groups = '', IF(j.title IS NULL, i.title, 1), j.groups); 
0

你忘了的其他屬於你內部IF。試試這個:

ORDER BY IF(
    j.groups IS NULL OR j.groups = '', 
    IF(
    j.title IS NULL, 
    i.title, 
    j.title -- this was missing 
), 
    j.groups 
) 

但我覺得這句法更可讀:

ORDER BY COALESCE(IF(j.groups = '', NULL, j.groups), j.title, i.title)