条件asc或desc in按顺序排列

时间:2013-10-22 07:05:52

标签: sql

我想:如果a不为null,则按升序排序,否则按降序排序,所以我写道:

  select a, b from table order by ifnull(a asc, b desc);

但MySQL抱怨语法错误

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

为什么不像这样跳过ifnull

select a, b from test order by a asc, b desc

以下是SQLFiddle

如果您希望order byaNULL值且将订单保留为aNON 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会保留顺序,它只会在{{1}时对它们进行排序} a值。

答案 1 :(得分:0)

这里你真的不需要IF语句。如果列“a”为空,则它对基于“b”列的结果排序方式没有影响。

SELECT a, b 
FROM table 
ORDER BY a asc, b desc;