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

本文介绍了一种在MySQL中调整查询结果顺序的方法,特别是如何将特定条目(如美国USA)置于列表之首,同时保持其他条目的字母顺序不变。通过使用CASE WHEN语句实现这一需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I have a list in MySQL that is sorted in alphabetical order as follows.

Argentina

Brazil

China

Malta

USA

Since the magority of my customers are from the USA, I want it to be displayed first in the list e.g.

USA

Argentina

Brazil

China

Malta

This is my code -

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

This is what I tried but did not work -

$sqlprimaryCategory = $dbh->prepare("SELECT * FROM $tableName GROUP BY primary_category ORDER BY primary_category='USA' ASC, primary_category ASC");

解决方案

just do a conditional order by with a case statement like so

QUERY:

SELECT *

FROM $tableName

GROUP BY primary_category

ORDER BY

CASE primary_category WHEN 'USA' THEN 1 ELSE 2 END ASC,

primary_category ASC

EDIT:

if you want to order by multiple fields first and then the rest you can do it like this.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值