MySQL中的IF子句中的IF中的多个IF

时间:2014-08-28 09:37:07

标签: mysql

不知道标题是否有效,因为我无法想出更好的描述。我会在这里澄清一下,但这有点棘手。

我正在开发一个订单系统,带有句柄案例。每个案例可分为几个阶段,但并非总是如此。所有这一切都将在一个点上得到一个"在生产"州。 "在生产"对于没有阶段的案件,州有2个日期,对于有阶段的案件,有2个日期 - 一个应该在生产中的最后期限,一个用于实际投入生产的时间。

现在,我需要4个日期来订购我的查询。

我的问题是,生产中的情况""应该是一起订购,而不是生产中的情况"应该是一起订购,无论是否有阶段的情况。我只需要根据具有阶段的情况来查看不同的字段。

我该怎么做?

我会尝试制作一张图片,让它更容易理解。

enter image description here e21,e23,r532i和r571a均为日期,应按日期排序。

1 个答案:

答案 0 :(得分:0)

您可以使用多个ifs进行选择和排序。但是,在大数据量上,它可能会变得效率低下。

示例:

select id, if( id < 2, if (id > 6, 7, 8), 4 ) 
from a 
order by if( id < 2, if (id > 6, 7, 8), 4 );

+----+------------------------------------+
| id | if( id < 2, if (id > 6, 7, 8), 4 ) |
+----+------------------------------------+
|  2 |                                  4 |
|  3 |                                  4 |
|  4 |                                  4 |
|  5 |                                  4 |
|  6 |                                  4 |
| 11 |                                  4 |
| 12 |                                  4 |
| 13 |                                  4 |
|  1 |                                  8 |
+----+------------------------------------+