Порядок MYSQL по сумме столбцов

Любая идея о том, как упорядочить результаты запроса MYSQL по сумме двух столбцов, а не по одному столбцу?

Select * FROM table ORDER BY (col1+col2) desc

Я знаю, что это не сработает, но я надеюсь, что это довольно хорошо передает то, что я хочу сделать.

Спасибо!


person djs22    schedule 17.06.2010    source источник


Ответы (5)


Почему бы не попробовать, прежде чем сделать вывод, что это не работает? На самом деле так оно и есть.

person Matthew Flaschen    schedule 17.06.2010
comment
Сохранение суммы (col1 + col2) в col3 и индексирование по ней сделает запрос быстрым? - person user2681045; 14.08.2014
comment
@ user2681045, я сомневаюсь, что это ускорит выполнение запроса в вопросе. Если вы измените его на ORDER BY col3 и у вас будет правильный индекс, возможно. Но это за счет денормализации вашей таблицы. - person Matthew Flaschen; 21.08.2014
comment
он не знал, насколько близок к успеху, прежде чем сдаться и задать вопрос. - person qualebs; 15.12.2014

Предположим, у вас есть таблица с именем «Студенты».

введите здесь описание изображения

Теперь вы хотите узнать общее количество баллов, набранных каждым учеником. Итак, введите следующий запрос

SELECT Name, S1, S2, SUM(S1+S2) AS TOTAL
FROM Students
GROUP BY Name, S1, S2
ORDER BY Total;

Вы получите следующий результат.

введите здесь описание изображения

person Rakesh Anand    schedule 01.07.2013

Я думаю, вы должны быть в состоянии сделать

SELECT *, col1+col2 as mysum ORDER BY mysum

Что по сути то же самое, что и у вас уже есть

person jfoucher    schedule 17.06.2010

Я могу подтвердить, что это НЕ работает в некоторых случаях. Проверьте, является ли какое-либо значение NULL

Select * FROM table ORDER BY (IFNULL(col1,0)+IFNULL(col2,0)) desc
person Djomla    schedule 30.04.2020
comment
Спасибо, у меня была эта проблема, и я не мог понять, почему :) Странно, что это не поведение по умолчанию, имхо - person Merricat; 01.10.2020

Написанный вами запрос должен работать нормально, вы можете использовать любое выражение в предложении ORDER BY.

person Lukáš Lalinský    schedule 17.06.2010
comment
У меня это не работает, я не думаю, что у вас может быть выражение для предложения ORDER BY - person Salvi Pascual; 30.04.2016