2016-08-23 77 views
0
id 
---- 
0 
2 
1 
3 
7 
1 
6 
3 
1 

我要排序在通過在MySQL使用ORDER BY降序id值。始終在底部,當ID = '3'(在MySQL使用`ORDER BY`)

但是,如果id的值等於3,請始終放在最下面。

其結果將是這樣的:

id 
---- 
7 
6 
2 
1 
1 
1 
0 
3 
3 

我應該怎麼辦?

我嘗試:

SELECT id FROM `table` ORDER BY CASE WHEN id='3' THEN ??? END, id DESC 

應該採取什麼問號呢?

回答

2

除了蒂姆的答案,我想玩弄布爾值:

SELECT 
    id 
FROM 
    `table` 
ORDER BY (id = 3), id DESC 

由於MySQL的boolean表達甲階酚醛樹脂我們可以在這個特定的場景中玩這個遊戲。

看看id is equal to 3然後按順序看起來像ORDER BY 1, <id> DESC

而且比以外的任何其他ID,它看起來像ORDER BY 0, <id> DESC

演示在這裏:

SQLFiddle

2

先按CASE表達式將3的id值強制置於底部,然後再按ID自身降序。

SELECT id 
FROM yourTable 
ORDER BY CASE WHEN id = 3 THEN 1 ELSE 0 END, 
     id DESC 

演示在這裏:

SQLFiddle

0

這會爲你工作:

SELECT * FROM tablename ORDER BY id = '3', id DESC