Я знаю, что заголовок не очень хорошо объясняет мой вопрос (если кто-то может придумать лучший заголовок, пожалуйста, отредактируйте его). Вот что я хочу сделать, скажем, у меня есть следующая таблица:
id | a | b | c
------------------
1 | 3 | 3 | 3
2 | 20 | 40 | 30
3 | 40 | 30 | 10
4 | 30 | 10 | 15
5 | 10 | 15 | 6
6 | 15 | 6 | 20
Это слегка усеченная версия, у меня есть еще несколько столбцов для сортировки, но принцип, лежащий в основе данных и моего вопроса, тот же.
Мне бы хотелось, чтобы данные были упорядочены следующим образом:
- Строка с наибольшим значением в столбце
- Строка с наибольшим значением в столбце b
- Строка с наибольшим значением в столбце c
- Далее следуют все оставшиеся строки, упорядоченные по их значению в столбце c
Итак, набор результатов будет выглядеть так:
id | a | b | c
------------------
3 | 40 | 30 | 10
2 | 20 | 40 | 30
6 | 15 | 6 | 20
4 | 30 | 10 | 15
5 | 10 | 15 | 6
1 | 3 | 3 | 3
делает
SELECT id, a, b, c
FROM table
ORDER BY a DESC, b DESC, c DESC
Очевидно, сначала дает мне заказ, затем b и, наконец, c, поэтому следующее (что мне не нужно) :
id | a | b | c
------------------
3 | 40 | 30 | 10
4 | 30 | 10 | 15
2 | 20 | 40 | 30
6 | 15 | 6 | 20
5 | 10 | 15 | 6
1 | 3 | 3 | 3