Я хочу, чтобы мой запрос возвращал строки таблицы, в которой столбец сначала содержит определенное значение, а затем возвращал остальные строки в алфавитном порядке.
Если у меня есть таблица, похожая на этот пример:
- Table: Users
- id - name - city
- 1 George Seattle
- 2 Sam Miami
- 3 John New York
- 4 Amy New York
- 5 Eric Chicago
- 6 Nick New York
И, используя эту таблицу, я хочу, чтобы мой запрос возвращал сначала строки, содержащие Нью-Йорк, а затем остальные строки в алфавитном порядке по городам. Можно ли это сделать с помощью одного запроса?
sql
sql-order-by
Phoexo
источник
источник
Ответы:
В SQL Server, Oracle, DB2 и многих других системах баз данных вы можете использовать следующее:
источник
ELSE 2
разделе означает , что в то время как Нью - Йорк получает значение 1, все остальные значения получить значение 2. ... по крайней мере, насколько порядок сортировки обеспокоен.Если ваш диалект SQL достаточно умен, чтобы обрабатывать логические выражения как имеющие числовое значение, вы можете использовать:
источник
ORDER BY
предложении.CASE
оператора (который является стандартным SQL) SQL Server вполне может использовать выражение вORDER BY
предложении. « слишком глупо, чтобы проводить тесты на эквивалентность » просто неправильно. Если вообще он должен читать: « не поддерживает неявное приведение логическогоtrue
значения MySQL к значению1
(единице). »ORDER BY id = 123 DESC, name ASC
Мой ответ может быть старым и необязательным, но кому-то может потребоваться другой подход, поэтому разместите его здесь.
У меня было такое же требование, которое реализовало это, сработало для меня.
PS
это для SQL
источник