【问题标题】:Set multiple order by in mysql query在mysql查询中设置多个顺序
【发布时间】:2017-09-14 09:10:55
【问题描述】:

我有一个用户表,其中包含一些用户信息。

id  |   name  |  country
------------------------------
1   |  user1  |  India
2   |  user2  |  China
3   |  user3  |  United State
4   |  user4  |  India
5   |  user5  |  Shri Lanka
6   |  user6  |  China
7   |  user7  |  India

我想搜索用户并编写一个 Mysql 查询。我想要的用户列表像 order by id desc 但是如果中国国家的用户应该最后来。

select * from users order by id desc

这个查询以降序给我结果,但我不知道我写的关于国家的内容。

我的输出应该是这样的

id  |   name  |  country
------------------------------
7   |  user7  |  India
5   |  user5  |  Shri Lanka
4   |  user4  |  India
3   |  user3  |  United State
1   |  user1  |  India
6   |  user6  |  China
2   |  user2  |  China

【问题讨论】:

标签: php mysql sql mysqli


【解决方案1】:

您可以使用条件排序:

ORDER BY t.country = 'China', // 1 if true, 0 if false, ordered ASC 
         t.id DESC

MySQL 接受布尔表达式,所以t.country = 'China' 如果为真,则为 1,如果为假,则为 0。

【讨论】:

    【解决方案2】:

    试试下面的

    SELECT * FROM users ORDER BY country = 'China',id DESC
    

    条件排序可以满足你的问题。

    【讨论】:

    • 这里和我的回答有什么不同?
    • 如果答案有用,请点赞@HarshwardhanSharma
    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多