2012-02-20 22 views
0

私は1+で注文する方法、最後に0の値を付ける方法を考えていました。mysqlを1+で注文し、最後に0を追加します

SQL構造:

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

私はその後show_titleseasonepisode(1+)によって他人の後episodeのための0値を持つすべてのエピソードを注文したいです。

+0

を、そして何の「受け入れ答えは」示されていない、それらが正しいかではありません。もしそうでなければ、いくつかのサンプルデータをダンプし、結果をどのように予測することができますか? – DRapp

+0

申し訳ありませんが、私はそれを投稿してから1分間働くことになりました。今すぐ承認されました! : – rackemup420

答えて

2

かなり単に

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

編集は、その後、あなたが言ったとおりにやるのMarc Bさん

+0

魅力のように動作します! – rackemup420

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

簡潔に言えば、episode = 0はtrue/falseのブール値に評価されます。 DESCの注文は、真の結果(エピソードは本当に= 0)が最初に出てから、その後のすべての他のエピソード値によって昇順(デフォルト)の順序で注文します。

+2

これに殴られました - これは少し洗練されています+いい説明がありますが –

+0

@MarcB、私はエピソードの= 0が他のものの後に来るように '(episode> 0)'であるべきだと思います。 –

+0

私は@MGAに気付かなかった - 私の返信は結局正しいものだと思う! :) –

0

を確認した後にこれをクリーンアップ..?

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

注MySQLではデフォルトの順序は昇順ですので、私は明示的にそれを降順にするために、クエリに「DESC」(終了)を置きます。

は(1+または0を含むテキストフィールドepisodeですか、それは数値です?)

MySQL ORDER BY docs

0

以下試してみてください。彼らはうまくいくように、すべてがLOOKのように多くの答えを

SELECT ... 
FROM tablename 
ORDER BY show_title,season,if(episode=0,1,0) 
関連する問題