2010-06-17 2 views
6

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

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

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

Спасибо!

ответ

21

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

+0

будет хранить сумму (col1 + col2) в col3 и индекс на нем, делает запрос быстро ?? – user2681045

+1

@ user2681045, я сомневаюсь, что запрос будет поставлен быстрее. Если вы измените его на 'ORDER BY col3' и, возможно, указате правильный индекс. Но это ценой денормализации таблицы. –

+1

он не знал, насколько близко он преуспел, прежде чем сдаться и задать вопрос. – qualebs

1

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

+0

Это не работает для меня, я не думаю, что вы можете иметь выражение в предложении ORDER BY –

2

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

SELECT *, col1+col2 as mysum ORDER BY mysum 

который является по существу такой же, как у вас уже есть

3

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

enter image description here

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

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

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

enter image description here