在 mysql db 表中,我有所有国家/地区,例如:
我把所有国家都取为:
SELECT * FROM countries_table 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;
这应该有效:
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)
文档:联合