2012-02-20 29 views
0

我想知道如何按1+排序,然後在末尾以0值排序。mysql order by 1+並追加0到末尾

SQL結構:

id || show_title || season || episode || title || plot || runtime || airdate 

我想show_titleseasonepisode(1+)那麼任何事件與其他後episode 0值訂購。

+0

與儘可能多的答案,所有的看起來像他們會的工作,並沒有「接受的答案」表示,他們是正確與否。如果不是,你可以轉儲一些示例數據,以及如何預測結果。 – DRapp 2012-02-21 00:39:18

+0

對不起,我張貼後,進入工作一分鐘。現在答案已經通過:D – rackemup420 2012-02-21 01:25:48

回答

2

很簡單

SELECT 
...... 
ORDER BY show_title ASC, seasons ASC, (episode>0) DESC, episode ASC 

編輯檢查後清理這件事馬克·B的

+0

作品像一個魅力謝謝你! – rackemup420 2012-02-21 01:24:54

4
SELECT ... 
... 
ORDER BY show_title, season, (episode = 0) DESC, episode 

簡而言之,episode = 0將評估爲布爾真/假。按DESC排序可以使任何真正的結果(情節真的= 0)首先出現,然後以升序(默認)順序排序所有其他情節值。

+2

捱打吧 - 這個比較清爽+有一個很好的解釋,雖然 – 2012-02-20 23:29:30

+0

@MarcB,我認爲它應該是'(episode> 0)',這樣episode的= 0會緊隨其後。 – 2012-02-20 23:53:20

+0

我沒有注意到@MGA - 我想我的回答畢竟是正確的! :) – 2012-02-20 23:58:25

0

然後當你說你做的正是..?在MySQL

SELECT ... 
FROM ... 
ORDER BY show_title, season, episode DESC 

注意默認順序是升序,所以我明確提出了「DESC」(結束)在查詢中,使其降序排列。

(是episode1+0文本字段,或者是它的數字?)

MySQL ORDER BY docs

0

嘗試以下:

SELECT ... 
FROM tablename 
ORDER BY show_title,season,if(episode=0,1,0)