使用一个MySQL查询将特定结果带到前面

ani*_*son 0 php mysql

我正在设置我的地理位置功能,按名称顺序列出所有国家/地区.但是,大多数网站都设置了热门国家(如美国,英国,加拿大,澳大利亚)位于列表的前面(首先显示而不是在指定位置).是否有可能使用我已经运行的相同MySQL查询来选择它们?

SELECT * FROM `global_flags` ORDER BY `country`
Run Code Online (Sandbox Code Playgroud)

某处有更好的选择吗?也许在可以查询数据库之后可以重新组织结果的东西?我不想排除这些结果,然后在开头手动输入它们,因为这会浪费更多的文件空间.

Vee*_*Arr 9

CASEORDER BY子句中使用表达式,并将特定值分配给要首先显示的国家/地区.

例如

SELECT * FROM global_flags
  ORDER BY (CASE WHEN country="United States" THEN 0 WHEN country="United Kingdom" THEN 1 ELSE 2 END), country;
Run Code Online (Sandbox Code Playgroud)

  • @animuson:我没有对此进行过测试,但您可以将CASE表达式简化为:`(例如国家IN('澳大利亚','加拿大','英国','美国')那么1 ELSE 2完)` (3认同)