задавать порядок таблицы в зависимости от того как составлен запрос where, т.е при помощи -
SELECT * FROM tickets as T WHERE T.ID = '10' OR T.ID = '20' ORDER BY T.ID = '10' desc, T.ID = '20' desc
можно получить в результате table [ID]|[Value]
10 | Value1
20 | Value2
Какой аналог есть для mssql?
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver15 , ORDER BY CASE WHEN
В мсскл так SELECT * FROM tickets as T WHERE T.ID = '10' OR T.ID = '20' ORDER BY T.ID desc
Уже ответил сам себе, решено с помощью case when, мне нужно было что бы в результате я получил таблицу где результат был отсортирован так как он был запрошен в where, к прим Where IN (10,20,15) я и получил 10 | value1 20 | value2 15 | value3 В случае если просто t.id desc - вся нужная мне логика рушится.
Если. Уже решено, то супер. Работает вариант в вопросе?
Вариант в вопросе - не работает, работает вариант с использованием order by case when
Order by - стандартная фраза в SQL, её поддерживают все СУБД
Order by *column*=value в ms не поддерживается вроде
Я понял о чём это. MySQL - наверное, единственная СУБД, где в языке есть тип boolean. Поэтому там можно написать булево выражение где угодно и оно будет как-то работать. Во многих других СУБД булевого типа нет вообще, булевы выражения писать в соответствующих фразах можно, но в системе типов этого нет, как бы объяснить - булево выражение прописывается на уровне синтаксиса, а не семантики выражения. В общем, такие трюки как у тебя, мало переносимы на другие СУБД, пиши Case expression всегда, даже в MySQL
Обсуждают сегодня