Mysql 将某些值排序到顶部
我有一个MySQL表,其中包含以下数据(简化): 现在,我希望能够得到一个以客户所在国家开始的、带页码的商店列表 例如,美国客户将看到以下列表:Mysql 将某些值排序到顶部,mysql,sql-order-by,Mysql,Sql Order By,我有一个MySQL表,其中包含以下数据(简化): 现在,我希望能够得到一个以客户所在国家开始的、带页码的商店列表 例如,美国客户将看到以下列表: Foo Baz Bar Foo2 Baz2 Bar3 我现在正在使用的简单解决方案(例如一位美国客户,页面大小为3): 有没有更好的方法?是否可以使用ORDER BY并告知将某个值放在顶部?您必须将一个国家的每个值与一个数字链接,并使用一个案例: select * from stores order by case when country = "u
Foo
Baz
Bar
Foo2
Baz2
Bar3
我现在正在使用的简单解决方案(例如一位美国客户,页面大小为3):
有没有更好的方法?是否可以使用ORDER BY并告知将某个值放在顶部?您必须将一个国家的每个值与一个数字链接,并使用一个案例:
select *
from stores
order by case when country = "us" then 1
else 0
end desc
创建一个国家代码和订单表,在查询中加入该表,然后按国家代码的订单排序 所以你会有一张看起来像
CountryOrder
Code Ord
---- ---
us 1
jp 2
se 3
然后是如下代码:
SELECT s.*
FROM Stores s
INNER JOIN CountryOrder c
ON c.Code = s.Country
ORDER BY c.Ord;
使用
IF
将最大值分配给US行如何
select if(country_cd='us,'aaaUS',country_cd) sort_country_cd, country_cd from stores Order by sort_country_cd
这将为您提供一个名为sort\u country\u cd
的伪列。
在这里,您可以将“我们”映射到“aaaUS”。
JP
仍然可以映射到JP
这将我们列在您的排序列表的顶部。试试以下方法:
SELECT * FROM stores ORDER BY country = "us" DESC, storeId
要首先获取搜索到的国家,然后按字母顺序获取其余国家:
SELECT *
FROM stores
ORDER BY country = 'us' DESC, country ASC
根据IF(国家/地区代码('CA','US'),0,1),国家/地区名称从国家/地区订单中选择国家/地区代码、国家/地区名称
SELECT * FROM stores ORDER BY country = "us" DESC, storeId
SELECT *
FROM stores
ORDER BY country = 'us' DESC, country ASC