У меня есть таблица стран с идентификатором, имя с повторяющимися записями. Я использую DISTINCT и UNION, чтобы показывать названия двух конкретных стран, Ирландия и Англия, вверху и все остальное после имени заказа, как показано ниже в SQL-сервере
create table country (id int , name varchar(50));
insert into country (id, name) values( 1, 'Kuwait');
insert into country (id, name) values( 2, 'Australia');
insert into country (id, name) values( 3, 'Canada');
insert into country (id, name) values( 4, 'spain');
insert into country (id, name) values( 5, 'Turkey');
insert into country (id, name) values( 6, 'Ireland');
insert into country (id, name) values( 7, 'England');
insert into country (id, name) values( 1, 'Kuwait');
insert into country (id, name) values( 2, 'Australia');
insert into country (id, name) values( 3, 'Canada');
insert into country (id, name) values( 4, 'spain');
insert into country (id, name) values( 5, 'Turkey');
insert into country (id, name) values( 6, 'Ireland');
insert into country (id, name) values( 7, 'England');
DESIRED OUTPUT:
id name
-----------
6 Ireland
7 England
2 Australia
3 Canada
1 Kuwait
4 Spain
5 Turkey
Пробовал с DISTINCT & UNION в SQL QUERY: но имена не упорядочены после 3 строки
select distinct id,name from country where id in (6,7)
union
select distinct id,name from country where id not in (6,7)
id name
-----------
6 Ireland
7 England
1 Kuwait
2 Australia
3 Canada
4 Spain
5 Turkey `
также пробовал с ORDER BY CASE:
select distinct id,name from country where id in (6,7)
union
select distinct id,name from country where id not in (6,7)
ORDER BY CASE
WHEN id = 6 and id = 7 -- whatever identifies that row
THEN 1 ELSE 2 END
ОШИБКА: элементы ORDER BY должны появляться в списке выбора, если инструкция содержит оператор UNION, INTERSECT или EXCEPT.