在mysql db表中我有所有国家/地区:
我把所有国家都取为:
SELECT * FROM countries_table ORDER BY country_name
但我想在列表顶部显示一些特定的国家/地区:
然后其他人会进入 ORDER BY country_name
可以通过 MYSQL 和/或 PHP &如何?
答案 0 :(得分:6)
有一个简单且不为人知的MySQL技巧:
SELECT * FROM countries_table
ORDER BY name = 'Australia' desc,
name = 'UAE' desc,
name = 'Pakistan' desc,
name = 'UK' desc,
name = 'USA' desc,
name asc;
答案 1 :(得分:1)
使用FIELD
SELECT country_id, country_name
FROM countries_table
ORDER BY
FIELD(country_name, 'USA', 'UK', 'Pakistan', 'UAE', 'Australia') DESC,
country_name ASC
答案 2 :(得分:0)
这应该有效:
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;
答案 3 :(得分:0)
另一种方法,使用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