2013-10-22 36 views
2

我想:如果按降序排列是不是null,則爲了通過升序排列,否則,爲了通過B,所以我寫:在一個順序條件遞增或遞減byexpression

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

但MySQL的抱怨語法錯誤

有什麼建議嗎?

+0

對不起,這說不通。假設你的a/b對是1/2,3/1,NULL/2。那麼NULL/2應該是哪裏?你的訂單是a = 1,到目前爲止a = 3(升序),然後你想插入b = 2遞減?你的意思是別的。正如斯奈德所建議的那樣,例如按順序排序然後按b排序。請澄清您的請求。 –

回答

0

你真的不需要這裏的IF語句。如果列「a」爲空,那麼它將不會影響基於列「b」排序結果的方式。

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

你爲什麼不只是跳過ifnull這樣的:

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

這裏是SQLFiddle

如果你想order by只有當aNULL值和離開秩序作爲其時aNON NULL,那麼你可以做到以下幾點:

select a, b from test order by a asc, 
case when a IS NULL THEN b ELSE 0 END desc 

這裏是SQLFiddle,你可以在這個小提琴中看到sql留下的訂單,因爲它是aNON NULL值,它只在aNULL值時纔會命令它們。