mysql db テーブルには、次のようなすべての国があります。
すべての国を次のように取得しました。
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;
を使用してそれを行う別の方法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
これはうまくいくはずです:
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;