我在SQL表中有一个订单列表,对于每个订单,我都有一个送货国家代码。
示例:
order country_code
X00145 GB
X00178 FR
D55454 AL
E54566 GB
F59565 IE
O84849 ES
K54545 US
N61465 GB
W65478 GB
我正在尝试对输出进行排序,因此首先按字母顺序返回不到country_code GB的订单,然后将GB订单放在最后(就像上面的示例中的IE和US之后) )。
使用“ORDER BY”只允许我使用ASC或DESC进行过滤。有没有办法使用一个条款和“ORDER BY”? (我想不是因为我在网上找不到任何东西)?
答案 0 :(得分:1)
对于MySQL你可以做
select * from your_table
order by country_code = 'GB',
country_code,
`order`
或一般
select * from your_table
order by case when country_code <> 'GB' then 1 else 2 end,
country_code,
`order`
答案 1 :(得分:0)
您可以使用order by field()
select * from table_name
order by field(country_code,'GB') desc,country_code
<强> DEMO 强>
答案 2 :(得分:0)
试试这个:
select * from yourtable where country_code != 'GB' order by country_code
Union
select * from yourtable where country_code = 'GB'