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

Php 使用一个MySQL查询将特定结果带到前端,php,mysql,Php,Mysql,我正在设置我的地理定位功能,按名称顺序列出所有国家。然而,大多数网站都将其设置在热门国家,如美国、英国、加拿大、澳大利亚等排名前列的国家,并将其放在首位,而不是放在指定的位置。是否可以使用我已经运行的相同MySQL查询来选择它们 SELECT * FROM `global_flags` ORDER BY `country` 有更好的选择吗?也许可以在查询数据库后重新组织结果?我不想排除这些结果,然后在开始时手动键入它们,因为这样会浪费文件中的更多空间。在ORDER BY子句中使用表达式,并将特

我正在设置我的地理定位功能,按名称顺序列出所有国家。然而,大多数网站都将其设置在热门国家,如美国、英国、加拿大、澳大利亚等排名前列的国家,并将其放在首位,而不是放在指定的位置。是否可以使用我已经运行的相同MySQL查询来选择它们

SELECT * FROM `global_flags` ORDER BY `country`
有更好的选择吗?也许可以在查询数据库后重新组织结果?我不想排除这些结果,然后在开始时手动键入它们,因为这样会浪费文件中的更多空间。

在ORDER BY子句中使用表达式,并将特定值指定给要首先显示的国家

e、 g


如果不能从列本身推测顺序,并且在您的情况下,我认为您不能,那么您需要向表中添加另一列,或者通过视图将其添加到表中,以提供排序顺序

例如,您可以有一个int类型的优先级列。对于大多数行,它是空的,而对于那些您想要预先设置的行,它可以是1。假设您希望美国和英国作为第一行,其余按字母顺序排列:

SELECT * FROM global_flags ORDER BY priority DESC, country
将更高优先级的项目推到结果集的顶部。具有相同优先级的项目将按字母顺序排序


编辑:我的方法有一个缺点,就是你正在向数据中添加UI内容。您总是可以将优先级(UI事物)分离到它自己的表中,并将其内部连接或创建一个视图。但也许是更好的一个:它不会因为UI问题而污染数据。

是的,这就像我的优先想法一样,只是它保持了自定义顺序,并且与数据分开。有人知道哪一个性能更好吗?因为为256行表添加一个额外的列似乎添加了太多的数据,我是这样做的:按国家=‘澳大利亚’时的大小写顺序选择*然后选择国家=‘加拿大’时的1,然后选择国家=‘英国’时的1,然后选择国家=‘美国’时的1,最后选择1,country@Frank:我相信您的解决方案会表现得更好,因为必须在查询时逐行评估案例,而不是简单地对整数排序。如果要在多个查询中使用,您的解决方案还有一个好处,那就是不必复制一个笨拙的大小写表达式。@animuson:我还没有测试过这个问题,但您可以将大小写表达式简化为:当国家在“澳大利亚”、“加拿大”、“英国”、“美国”时,大小写表达式为“CASE WHEN country in's Australia”、“Canada”、“United Kingdom”、“United States”,然后1 els 2 END
SELECT * FROM global_flags ORDER BY priority DESC, country