我想:如果a不为null,则按升序排序,否则按降序排序,所以我写道:
select a, b from table order by ifnull(a asc, b desc);
但MySQL抱怨语法错误
有什么建议吗?
答案 0 :(得分:0)
为什么不像这样跳过ifnull
:
select a, b from test order by a asc, b desc
以下是SQLFiddle
如果您希望order by
仅a
为NULL
值且将订单保留为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会保留顺序,它只会在{{1}时对它们进行排序} a
值。
答案 1 :(得分:0)
这里你真的不需要IF语句。如果列“a”为空,则它对基于“b”列的结果排序方式没有影响。
SELECT a, b
FROM table
ORDER BY a asc, b desc;