Алгоритм сортировки Order by по Case в SQL

Таблица:
first_column  second_column
1	      11
1	      12
2	      21
1	      13
2	      22
3	      31
3	      32
4	      23

Внутри order by допускается использование case, например:

select * from TableTemp order by case when first_column = 1 then second_column 
else first_column end


Результат сортировки:
first_column  second_colum
2	      22
2	      21
3	      31
3	      32
4	      23
1	      11
1	      12
1	      13


Подскажите, пожалуйста, как работает данная сортировка?

Причина вопроса - в столбце first_column помимо значения "1" имеются "2", "3" и "4".

Забегая вперед, я верно понял, что все строки, в которых first_column = 1 сортируются по second_column, а все строки, в которых first_column !=1 - по first_column?

Еще как вариант работы - если в таблице хотя бы одно значение first_column равно "1", то таблица должна сортироваться по столбцу second_column, в противном случае - по первому столбцу. Тем не менее, в последнем столбце отсутствует подобная сортировка.
  • Вопрос задан
  • 4598 просмотров
Решения вопроса 1
Вычисляется значение case для каждой строки и сортируются по этому значению. Для удобства показал чему будет равен case в каждой строке, вот по этому числу и будет сортироваться.

first_column  second_colum  Case_Value
2	      22	      2
2	      21	      2
3	      31	      3
3	      32	      3
4	      23	      4
1	      11	      11
1	      12	      12
1	      13	      13
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы