我有一个表格,包含以下字段。MySql通过商业合作伙伴订购条款
Table
+----+-------+---------+------------+
| id | title | approve | expirydate |
+----+-------+---------+------------+
我想expirydate过滤行,因为我想先已expirydate远离今日(降序expirydate场的顺序)获得行,如果任何行没有“expirydate”或者它已经按ID字段的降序过期订单。
例如(假设今天== 2015年1月15日)
+----+-------+---------+------------+
| id | title | approve | expirydate |
+----+-------+---------+------------+
| 1 | ttle1 | 1 | 2015-01-01 |
+----+-------+---------+------------+
| 2 | ttle2 | 1 | 2015-02-15 |
+----+-------+---------+------------+
| 3 | ttle3 | 1 | |
+----+-------+---------+------------+
| 4 | ttle4 | 1 | 2015-01-20 |
+----+-------+---------+------------+
预期的结果
+----+-------+---------+------------+
| 2 | ttle2 | 1 | 2015-02-15 |
+----+-------+---------+------------+
| 4 | ttle4 | 1 | 2015-01-20 |
+----+-------+---------+------------+
| 3 | ttle3 | 1 | |
+----+-------+---------+------------+
| 1 | ttle1 | 1 | 2015-01-01 |
+----+-------+---------+------------+
是否有可能在一个MySQL查询这些条件得到数值我真的没有想法做到这一点。任何帮助感激地收到:)
谢谢:)这个查询工作正常:)我认为'ifnull'和'if'语句做同样的工作。 – indrarajw 2015-01-19 14:33:37
@indrarajw他们做不同的工作。也许'ifnull(expirydate> curdate(),0)desc'冗余在这里。如果将空值视为小于非空值,那么if(expirydate> curdate(),expirydate,null)desc将它们放在列表的底部。但是,例如,如果您想升序排列而不过期,但仍然在过期之前放置它们,则应存在'ifnull(expirydate> curdate(),0)desc'。 – PetSerAl 2015-01-19 15:21:02