2012-02-20 93 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)