MySQL按字母顺序显示结果,但在按字母顺序排序的列表之前显示特定项
我在MySQL中有一个列表,按字母顺序排序如下MySQL按字母顺序显示结果,但在按字母顺序排序的列表之前显示特定项,mysql,sorting,Mysql,Sorting,我在MySQL中有一个列表,按字母顺序排序如下 阿根廷 巴西 中国 马耳他 美国 由于我的客户大多来自美国,我希望在列表中首先显示,例如: 美国 阿根廷 巴西 中国 马耳他 这是我的密码- $sqlprimaryCategory = $dbh->prepare("SELECT * FROM $tableName GROUP BY primary_category "); 这是我试过但没用的- $sqlprimaryCategory=$dbh->prepare(“从$tableName组中
$sqlprimaryCategory = $dbh->prepare("SELECT * FROM $tableName GROUP BY primary_category ");
这是我试过但没用的-
$sqlprimaryCategory=$dbh->prepare(“从$tableName组中选择*按主要\类别顺序按主要\类别='USA'ASC,主要\类别ASC”) 只需使用如下case语句执行条件order by 查询: 编辑: 如果您想先按多个字段排序,然后按其他字段排序,您可以这样做
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
这里有一个更大的问题。你的逻辑 如果有许多高优先级的产品类别,那么显然您需要另一列
priority TINYINT(1)
然后选择…
orderbypriority DESC,category
我发现最好更改物理数据:编号1到5,其中1是美国,其余是字母顺序。这样,您就不需要修改表,只需要获取数据。我将使用产品类别,而不是国家,因此,我将一直添加产品类别,因此如果我希望某些产品类别显示在顶部,那么一直对它们重新编号将是一项繁琐的任务。它们是否使用数字存储在数据库中?它们使用自动增量存储在MySQL中,因为这是必需的,所以它是一个自动递增的id,名称位于不同的栏目对吗?@user2333968当然!记住,如果您想添加多个订单,您也可以这样做。。我还要举个例子:)谢谢。干得好。正是我要找的!
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