|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
Есть таблица сотрудников: 1 Настя 2 Александр 3 Ольга 4 Антон 5 Сергей Есть необходимость вывести строки в заданном порядке, например: 3, 1, 2, 5, 4 Я нашел 2 способа написания запроса: select * from table_name where id in (3, 1, 2, 5, 4) order by case when id =3 then 1 when id =1 then 2 when id =2 then 3 when id =5 then 4 when id =4 then 5 end select * from table_name where id=3 union select * from table_name where id=1 union select * from table_name where id=2 union select * from table_name where id=5 union select * from table_name where id=4 На мой взгляд эти вопросы не оптимальны. При увеличении строк в таблице увеличивается количество строк в запросе, есть ли более простой способ написания запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 08:32 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
Ну, заведите таблицу с двумя полями, ID и весом при сортировке. Заполняйте, джойните, сортируйте по весу из этой таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 08:42 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
порядок может постоянно меняться. строк несколько тысяч, пользователь последовательно выбирает нужные строки, выгрузиться в отчет они должны в той же последовательности, в которой он их выбрал. у нас есть строка вида "(3, 1, 2, 5, 4)" хотелось бы написать в запросе что-то типа where id in (3,1,2,5,4) order by id (3,1,2,5,4), т.е. явно задать сортировку ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 15:57 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
reaque порядок может постоянно меняться. строк несколько тысяч, пользователь последовательно выбирает нужные строки, выгрузиться в отчет они должны в той же последовательности, в которой он их выбрал. у нас есть строка вида "(3, 1, 2, 5, 4)" хотелось бы написать в запросе что-то типа where id in (3,1,2,5,4) order by id (3,1,2,5,4), т.е. явно задать сортировку это упростит код, но замедлит скорость запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 17:04 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
Ну, а в чем проблема? Эти 3,1,2,5,4 в переменную можете получить? Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 17:05 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
У нас Microsoft SQL Server 2014. OPENJSON (Transact-SQL). Применимо к: даSQL Server 2016 (13.x); и более поздние версии ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 07:00 |
|
Сортировка в заданном порядке
|
|||
---|---|---|---|
#18+
Ну... Это не оговаривалось :-) Впрочем, через xml - тоже можно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 07:58 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684271]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 385ms |
0 / 0 |