2009-08-20 12 views
9

私はkarma_upとkarma_downのテーブルを持っているとしましょう。誰かが投票するたびにkarma_upが増分され、誰かが投票するたびにkarma_downが増分されます。どのようにこれらの行を選択して、これらの新しい値の合計で並べ替えることができますか? ORDER BY(karma_up - karma_down)は私の望むように動作していないようです。私は単に最高のカルマをもった列を上にしたいだけです。2つのフィールドの合計で並べ替え

SELECT 
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA 
FROM KARMA 
ORDER BY USER_KARMA DESC 
+0

は、この質問の最終的な結果は SELECT *、CASTました私の負のカルマ値が非常に大きくなりました。これは私のkarma_upとkarma_downフィールドを取り消すためのものですが、CAST()は解決策でした。ありがとうございました! –

答えて

19

は、この仕事をしていますか?そうでない場合は、質問に結果を含めることができますか?式を注文すると、期待どおりに動作するはずです。私がいたので、私はキャストするために必要なkarma_total DESC BY ORDER links` `FROM - (符号付きkarma_down karma_up)AS karma_total

SELECT `post_id`, `karma_up`, `karma_down`, `karma_up` - `karma_down` AS `total` 
ORDER BY `total` DESC 
+0

OPは一番上のほうがいいと思うし、Bill Karwinが投稿したように彼はDESCが必要だと思う。 –

+0

ありがとうございます。私は自分の答えを確定しました –

0

非常にシンプルな

6
SELECT *, karma_up - karma_down AS karma_total 
FROM MyTable 
ORDER BY karma_total DESC; 
+0

選択した回答が投稿された直後に正解を投稿しました。 – Pachonk

+1

あなたはいくつか勝つ、いくつかを失う。重要なのは、OPが彼の質問に答えたということです。 –

+1

真実ですが、ただ同情的です。 – Pachonk

関連する問題