我尝试获取 mysql select 的最大值,但如果有一行不包含时间戳,则希望将其设置为 null/empty/0。
表统计数据(简化):
ID CLIENT ORDER_DATE CANCEL_DATE
1 5 1213567200
2 5 1213567200
3 6 1210629600 1281736799
4 6 1210629600 1281736799
5 7 1201042800 1248386399
6 7 1201042800
7 8 1205449200 1271282399
我现在正在寻找最低订单日期(没问题,因为它永远不为空),并且
最长取消日期。如果客户已经取消了他的订阅,则取消日期被填满,但如果他仍然活跃,则根本没有取消日期。
Query:
SELECT ID, min(ORDER_DATE) AS OD, max(CANCEL_DATE) AS CD FROM stats GROUP BY CLIENT
Returns:
ID OD CD
5 1213567200 // fine
6 1210629600 1281736799 // fine
7 1201042800 1248386399 // Should be empty
8 1205449200 1271282399 // fine
如果客户端有一个(或多个)空列,我无法弄清楚如何返回空/0/NULL。还尝试使用 NULL 字段。
感谢您的任何提示。
我不知道它会多快,但我想它可以这样解决:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
我无法测试它,但这个解决方案背后的想法是count(cancel_date)
应该计算所有非空值条目,如果它等于count(*)
这意味着没有空值并且它将返回max(cancel_date)
,否则为空。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)