我想:如果 a 不为空,则按升序按 a 排序,否则按 b 降序排序,所以我写:
select a, b from table order by ifnull(a asc, b desc);
但是MySQL抱怨语法错误
有什么建议吗?
这里真的
不需要 IF 语句。 如果列 "a" 为 null,则它不会影响基于列 "b" 对结果进行排序的方式。
SELECT a, b
FROM table
ORDER BY a asc, b desc;
你为什么不像这样跳过ifnull
:
select a, b from test order by a asc, b desc
这是 SQLFiddle
如果只想在a
值NULL
时order by
,并在a
NON NULL
时保留顺序,则可以执行以下操作:
select a, b from test order by a asc,
case when a IS NULL THEN b ELSE 0 END desc
这是 SQLFiddle,您可以在此小提琴中看到,当 a
具有NON NULL
值时,sql 保持顺序不变,它仅在a
具有NULL
值时对它们进行排序。