我有这样的查询:
SELECT sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 day))) as num_day
FROM mytable
WHERE user_id = :id
选择现在的行时, SUM()
返回NULL
。我的意思是:id
中不存在mytable
时,num_day
的结果为NULL
。
根据我的需要,它不应该是NULL
。它应该是0
或更多。
无论如何,我如何计算条件的真实数量?这是条件:
date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 day))
答案 0 :(得分:2)
最简单的事情是用ifnull()
包裹它以在0
null
ifnull( sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 day))), 0)
答案 1 :(得分:2)
这是你的意思吗?
SELECT COUNT(*) AS num_day
FROM mytable
WHERE user_id = :id
AND date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 day))
如果没有要添加的内容,SUM()将返回null。 COUNT将返回实际数字,如果没有则返回0。
答案 2 :(得分:1)
如何计算条件的真实数?这是条件:
在条件CASE
SUM
SELECT sum( CASE WHEN date_time > unix_timestamp(DATE_SUB(now(),
INTERVAL 1 day))
THEN 1
ELSE 0
END
) as num_day
答案 3 :(得分:0)
SELECT sum(if(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 day))),1,0) as num_day
FROM mytable
WHERE user_id = :id
使用这样的查询。