条件 ASC 或 Desc 在顺序 by表达式中



我想:如果 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

如果只想在aNULLorder 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值时对它们进行排序。

最新更新