MYSQL条件ORDER BY语句
我需要一个有条件的orderby语句。用外行的话说是这样的:MYSQL条件ORDER BY语句,mysql,sql-order-by,Mysql,Sql Order By,我需要一个有条件的orderby语句。用外行的话说是这样的: IF index_order IS NULL ORDER BY id ASC ELSE ORDER BY index_order ASC. 因此,基本上,它将首先按ID对所有具有空索引顺序值的行进行排序,然后按索引顺序对其余行进行排序 非常感谢您的帮助。只需使用: ORDER BY index_order, id 因为NULL的排序总是低于任何其他值。因此,索引顺序为NULL的所有行将首先分组。然后,它们的顺序将由id解析 请回
IF index_order IS NULL ORDER BY id ASC ELSE ORDER BY index_order ASC.
因此,基本上,它将首先按ID对所有具有空索引顺序值的行进行排序,然后按索引顺序对其余行进行排序
非常感谢您的帮助。只需使用:
ORDER BY index_order, id
因为NULL的排序总是低于任何其他值。因此,索引顺序为NULL的所有行将首先分组。然后,它们的顺序将由id
解析
请回复您的评论: 我试过了
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\u order
为空的位置进行排序,并用id
解决关系。然后按非空索引顺序
升序排序
我不确定从您的描述中我是否理解您希望它以不同的方式排序。如果:
ORDER BY COALESCE(NULLIF(id, ''), index_order), index_order
要了解更多信息,请单击和可能的副本可能是副本,但比尔的答案比那张一汉克的账单好。我一开始试过了,这对我来说很有效,但是,我需要按ID ASC对空行进行排序,并且似乎在转到index_order之前按ID DESC对空行进行排序。有什么想法吗?我想我需要指定NULL index\u order行由ID列按升序排序-它们按index\u顺序移动。如上所述,它可以正常工作,除了对空行进行的排序与我需要的相反。