MySQL显示按字母顺序排列的结果,但在按字母顺序排序的列表之前显示特定项目

时间:2014-08-07 23:06:37

标签: mysql sorting

我在MySQL中有一个列表,按字母顺序排序如下。

  1. 阿根廷
  2. 巴西
  3. 中国
  4. 马耳他
  5. USA
  6. 由于我的客户来自美国,我希望它首先显示在列表中。例如

    1. USA
    2. 阿根廷
    3. 巴西
    4. 中国
    5. 马耳他
    6. 这是我的代码 -

      $sqlprimaryCategory = $dbh->prepare("SELECT * FROM $tableName GROUP BY primary_category ");
      

      这是我尝试但没有效果的 -     $ sqlprimaryCategory = $ dbh-> prepare(" SELECT * FROM $ tableName GROUP BY primary_category ORDER BY primary_category =' USA' ASC,primary_category ASC");

2 个答案:

答案 0 :(得分:1)

只需通过像

这样的案例陈述来执行条件订单

QUERY:

SELECT * 
FROM $tableName 
GROUP BY primary_category
ORDER BY 
    CASE primary_category WHEN 'USA' THEN 1 ELSE 2 END ASC,
    primary_category ASC

编辑:

如果你想先按多个字段排序,那么你可以这样做。

SELECT * 
FROM $tableName 
GROUP BY primary_category
ORDER BY 
    CASE primary_category 
      WHEN 'USA' THEN 1 --#-- 1 for usa
      WHEN 'China' THEN 2 --#-- 2 for china
      ELSE 3 END ASC, --#-- 3 for anything else
    primary_category ASC

答案 1 :(得分:0)

这里有一个更大的问题。你的逻辑。

如果有许多高优先级的产品类别,那么显然您需要另一列priority TINYINT(1)

然后选择... ORDER BY priority DESC, category