我在MySQL中有一个列表,按字母顺序排序如下。
由于我的客户来自美国,我希望它首先显示在列表中。例如
这是我的代码 -
$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");
答案 0 :(得分:1)
只需通过像
这样的案例陈述来执行条件订单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