Yen*_*nky 6 mysql null max min
我尝试获取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
Run Code Online (Sandbox Code Playgroud)
我现在想要获得最低订单日期(没问题,因为它永远不会是空的),以及最长取消日期.如果客户已经取消了他的订阅,则取消日期已被填写,但如果他仍然有效,则根本没有取消日期.
查询:
SELECT ID, min(ORDER_DATE) AS OD, max(CANCEL_DATE) AS CD FROM stats GROUP BY CLIENT
Run Code Online (Sandbox Code Playgroud)
返回:
ID OD CD
5 1213567200 // fine
6 1210629600 1281736799 // fine
7 1201042800 1248386399 // Should be empty
8 1205449200 1271282399 // fine
Run Code Online (Sandbox Code Playgroud)
如果客户端有一个(或多个)空列,我无法弄清楚如何返回空/ 0/NULL.还尝试使用NULL字段.
谢谢你的任何提示.
小智 6
我不知道它会有多快,但我猜它可以像这样解决:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Run Code Online (Sandbox Code Playgroud)
我无法测试它,但这个解决方案背后的想法是,count(cancel_date)应该计算所有非空值条目,如果它等于,count(*)这意味着没有空值,它将返回max(cancel_date),否则为null.