SQL-запрос - как упорядочить часть моих данных в алфавитном порядке, а часть по идентификатору - PullRequest
0 голосов
/ 04 июля 2019

У меня есть небольшой фрагмент данных (15 записей), часть которого я хочу упорядочить в алфавитном порядке, а часть - в виде идентификатора

На рисунке 1 показаны мои данные в исходном порядке

enter image description here

После выполнения запроса SELECT * FROM tableName ORDER BY code;

На рисунке 2 мои данные теперь отображаются в алфавитном порядке, и это здорово, но я бы хотел, чтобы первые 2 записи были упорядочены по id

enter image description here

На рисунке 3 показано, как я хочу, чтобы мои данные выглядели

enter image description here

Может кто-нибудь помочь с моим запросом, пожалуйста?

Ответы [ 3 ]

1 голос
/ 04 июля 2019

я предположил id является целым числом. Вы можете использовать условное CASE в предложении ORDER BY.

Примечание для первого выражения case when code in ('LUX-INT', 'LUX-CONT') then -id end desc, оно вернет id или NULL. Поскольку NULL будет первым в ORDER BY, я использую DESC и отменяю значение id, чтобы id находился в порядке возрастания

order by case when code in ('LUX-INT', 'LUX-CONT') then -id end desc, code
0 голосов
/ 04 июля 2019

Я бы написал это как:

order by (case when code in ('LUX-INT', 'LUX-CONT') then 1 else 2 end),   -- put the special codes first
         (case when code in ('LUX-INT', 'LUX-CONT') then code end),       -- order them alphabetically
         id                                                               -- order the rest by id

Это работает независимо от типов и параметров сортировки нижележащих столбцов.

0 голосов
/ 04 июля 2019

вариант использования, когда

SELECT * FROM tableName ORDER BY case when code in ('LUX INT','LUX-CONT') then id else code end
...