Упорядочить по сумме двух полей

Допустим, у меня есть таблица с karma_up и karma_down. Каждый раз, когда кто-то голосует за, karma_up увеличивается, и каждый раз, когда кто-то голосует против, karma_down также увеличивается на единицу. Как я могу выбрать эти строки и упорядочить их по сумме этих новых значений? ORDER BY (karma_up - karma_down) работает не так, как я хочу. Мне просто нужны строки с самой высокой кармой наверху.


person Community    schedule 20.08.2009    source источник
comment
Окончательный результат этого вопроса был SELECT * , CAST( karma_up - karma_down AS SIGNED ) AS karma_total FROM links ORDER BY karma_total DESC Мне нужно было CAST, потому что я получал очень большие числа для своих отрицательных значений кармы. Это то, что я получаю за отмену подписи моих полей karma_up и karma_down, но CAST() был решением. Спасибо!   -  person    schedule 21.08.2009


Ответы (3)


Очень простой

SELECT 
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA 
FROM KARMA 
ORDER BY USER_KARMA DESC
person Virat Kadaru    schedule 20.08.2009
comment
ОП хочет самого высокого на вершине, и я думаю, что ему нужен DESC, как написал Билл Карвин. - person Leonel Martins; 21.08.2009

Это работает? Если нет, не могли бы вы включить результаты в свой вопрос? Упорядочивание выражения должно работать так, как ожидалось.

SELECT `post_id`, `karma_up`, `karma_down`, `karma_up` - `karma_down` AS `total`
ORDER BY `total` DESC
person John Millikin    schedule 20.08.2009

person    schedule
comment
Ой, опубликовал правильный ответ сразу после публикации выбранного ответа. - person grepsedawk; 16.02.2013
comment
Что-то выигрываешь, что-то теряешь. Важно то, что ОП получил ответ на свой вопрос. - person Bill Karwin; 16.02.2013
comment
Правда, но только из сочувствия. - person grepsedawk; 17.02.2013
comment
OP = Оригинальный постер. Человек, задавший вопрос. - person Bill Karwin; 17.02.2013