PHP选择下拉选项,通过mysql将特定选项放在顶部

时间:2012-11-22 21:48:39

标签: php mysql sql-order-by selection

我的国家/地区表包含以下列:rank_id和country_name。

现在它按名称排序,但我试图按照排名顺序将一些特定国家放在列表的顶部,然后通过名称跟随其余国家。

这是我的疑问:

foreach ($db->query("SELECT * FROM " . config_item('cart', 'table_countries') . "") as $row)
$countries[] = $row;

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您添加rank_order列,其默认值为0,然后将其更改为您希望位于列表顶部的少数特定国家/地区的更高数字。

然后,您可以使用此查询来获取数据:

SELECT * FROM table_countries ORDER BY rank_order DESC, country_name

按排名排序的行将始终排在第一位(按降序排列),因为他们的rank_order高于0。其余的将按country_name按字母顺序排序。

答案 1 :(得分:0)

实现此目的的一种简单方法是在display_order中包含一个数字country_name列,允许您通过使用名称排序来覆盖优先级集。

这样您就可以根据需要随意将国家/地区移动到列表顶部,而无需在以后更改查询。

然后您可以执行以下操作:

  SELECT *
  FROM country_name
  ORDER BY display_order ASC, name ASC;

答案 2 :(得分:0)

您可以通过添加以下内容来调整“ORDER BY”子句:

ORDER BY country_name='USA' DESC, country_name='Canada' DESC, country_name ASC

由于“country_name ='USA'”仅对美国返回“true”(或1),对所有其他国家/地区返回“false”(或0)且order by降序,USA将是第一个,然后是相同的加拿大,然后所有其他人都会来!