首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL条件按语句排序

问MYSQL条件按语句排序
EN

Stack Overflow用户
提问于 2014-05-02 22:45:48
回答 2查看 199关注 0票数 1

我需要一个条件ORDER BY语句。用外行人的话来说是这样的:

代码语言:javascript
复制
IF index_order IS NULL ORDER BY id ASC ELSE ORDER BY index_order ASC.

因此,基本上,它将通过ID对具有空index_order值的所有行进行排序,然后通过index_order对其余的行进行排序。

这里的任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 22:48:02

只需使用:

代码语言:javascript
复制
ORDER BY index_order, id

因为NULL排序总是低于任何其他值。因此,所有index_order为NULL的行都将首先分组。然后,他们的秩序将由id解决。

关于你的评论:

我试过了。

代码语言:javascript
复制
mysql> create table foo (id int auto_increment primary key, index_order int);
mysql> insert into foo values (1, 2), (2, 1), (3, null), (4, null);
mysql> select * from foo order by index_order, id;
+----+-------------+
| id | index_order |
+----+-------------+
|  3 |        NULL |
|  4 |        NULL |
|  2 |           1 |
|  1 |           2 |
+----+-------------+

它首先命令index_order为null,并使用id排序升序解析绑定。然后通过非空index_order升序进行排序。

我不知道从你的描述中我是否理解你希望它能有不同的排序。

票数 1
EN

Stack Overflow用户

发布于 2014-05-02 22:53:32

yo可以使用COALESCE和NULLIF:

代码语言:javascript
复制
ORDER BY COALESCE(NULLIF(id, ''), index_order), index_order

要获得更多信息,请单击这里和这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23438052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档