首页 > 解决方案 > SQL,把最常见的国家放在最前面,然后放在下面

问题描述

我正在尝试创建一个显示所有国家/地区的选择字段,但将 UK、US、CA、NZ 和 AU 放在顶部,然后将所有其余部分放在下面,但按字母顺序排列!我不确定如何解决这个问题,并且已经通过 StackOverflow 进行了搜索,但还没有找到解决方案。

public function getCountries()
{
    $results = $this->db->select('msi_countries','status = 1 ORDER BY sorting DESC');
    return $results;
}

我的数据库表如下:

id | cc | name | status | sorting
------------------------------
1  | ?? | afff | 1      | 0
2  | ?? | vccc | 1      | 0
....
....
121  | AU | Australia   | 1      | 1
122  | NZ | New Zealand | 1      | 2
etc.

然后我尝试按 DESC 排序并认为它会再次回到第一个国家,但它不起作用所以我想知道如何完成这项任务,我将顶级国家放在顶部,然后其余的在下面!:

country
country
country
country
-----------------
rest of countries

谢谢

标签: phpsql

解决方案


不确定我是否能很好地理解您的问题,但是如果您想先显示最大的sorting国家,然后再显示零的国家(这些按名称排序),那么查询应该如下所示:

select * 
  from msi_countries
  order by sorting desc, name

这是你想要的吗?


推荐阅读