Mysql: перемещение конкретных записей поверх результирующего массива рядом с ORDER BY

В таблице mysql db у меня есть все страны:

countries_table

и я выбрал все страны как:

SELECT * FROM countries_table ORDER BY country_name 

но я хочу показать некоторые конкретные страны в верхней части списка:

Конкретные страны

а затем другие появятся в ORDER BY country_name

Может ли это быть разрешено MYSQL и / или PHP и как?

Существует простой и малоизвестный трюк MySQL:

 SELECT * FROM countries_table ORDER BY name = 'Australia' desc, name = 'UAE' desc, name = 'Pakistan' desc, name = 'UK' desc, name = 'USA' desc, name asc; 

Использовать FIELD

 SELECT country_id, country_name FROM countries_table ORDER BY FIELD(country_name, 'USA', 'UK', 'Pakistan', 'UAE', 'Australia') DESC, country_name ASC 

EDITED: спасибо за комментарий mvf

Это должно работать:

 SELECT country_id, country_name FROM countries_table ORDER BY (CASE country_name WHEN 'Australia' THEN '1' WHEN 'UAE' THEN '2' ... ELSE country_name END) ASC; 

Другой способ сделать это, используя UNION :

 (SELECT * FROM countries_table WHERE name IN('Australia', 'UAE', 'Pakistan', 'UK', 'USA') ORDER BY name ASC) UNION (SELECT * FROM countries_table WHERE name NOT IN('Australia', 'UAE', 'Pakistan', 'UK', 'USA') ORDER BY name ASC) 

Документация: UNION