1

在 mysql db 表中,我有所有国家/地区,例如:

国家表

我把所有国家都取为:

SELECT * FROM countries_table ORDER BY country_name

但我想在列表顶部显示一些特定国家:

特定国家

然后其他将按国家名称排序

它可以通过MYSQL和/或PHP解决吗?如何解决?

4

4 回答 4

8

有一个简单但不为人知的 MySQL 技巧:

SELECT * FROM countries_table
ORDER BY name = 'Australia' desc,
         name = 'UAE' desc,
         name = 'Pakistan' desc,
         name = 'UK' desc,
         name = 'USA' desc,
         name asc;
于 2012-08-10T14:05:20.187 回答
1

使用字段

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

已编辑:感谢评论 mvf

于 2012-08-10T14:09:06.770 回答
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;
于 2012-08-10T14:00:57.713 回答
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)

文档:联合

于 2012-08-10T14:19:01.883 回答