我正在尝试完成这段代码:
ORDER BY IF(j.groups IS NULL OR j.groups = '', IF(j.title IS NULL, i.title), j.groups)
在英文中:如果存在则先按j.groups排序,如果存在则按j.title排序,最后按i.title排序。但上述方法行不通。
试试这个:
ORDER BY IF(j.groups IS NULL OR j.groups = '', IFNULL(j.title, i.title), j.groups);
或
ORDER BY COALESCE(j.groups, j.title, i.title);
或
ORDER BY IF(j.groups IS NULL OR j.groups = '', IF(j.title IS NULL, i.title, 1), j.groups);
您忘记了内部IF
的else部分。试试这个:
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)