Допустим, у меня есть таблица с karma_up и karma_down. Каждый раз, когда кто-то голосует за, karma_up увеличивается, и каждый раз, когда кто-то голосует против, karma_down также увеличивается на единицу. Как я могу выбрать эти строки и упорядочить их по сумме этих новых значений? ORDER BY (karma_up - karma_down) работает не так, как я хочу. Мне просто нужны строки с самой высокой кармой наверху.
Упорядочить по сумме двух полей
Ответы (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
ОП хочет самого высокого на вершине, и я думаю, что ему нужен 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
Ой, опубликовал правильный ответ сразу после публикации выбранного ответа.
- person grepsedawk; 16.02.2013
Что-то выигрываешь, что-то теряешь. Важно то, что ОП получил ответ на свой вопрос.
- person Bill Karwin; 16.02.2013
Правда, но только из сочувствия.
- person grepsedawk; 17.02.2013
OP = Оригинальный постер. Человек, задавший вопрос.
- person Bill Karwin; 17.02.2013
linksORDER BY karma_total DESC Мне нужно было CAST, потому что я получал очень большие числа для своих отрицательных значений кармы. Это то, что я получаю за отмену подписи моих полей karma_up и karma_down, но CAST() был решением. Спасибо! - person   schedule 21.08.2009