如果列--MySQL中没有结果,则获取0值
我有以下疑问如果列--MySQL中没有结果,则获取0值,mysql,sql,select,Mysql,Sql,Select,我有以下疑问 SELECT COUNT( iContactId ) AS Users, DATE( dCreatedAt ) AS ActivityDate FROM contacts WHERE iAppId =".$iAppId." AND DATE(dCreatedAt) IN (CURRENT_DATE(), CURRENT_DATE()-1 ) GROUP BY ActivityDate 这样我就明白了 Users |ActivityDate 1 |2014-09-1
SELECT COUNT( iContactId ) AS Users, DATE( dCreatedAt ) AS ActivityDate
FROM contacts WHERE iAppId =".$iAppId."
AND DATE(dCreatedAt) IN (CURRENT_DATE(), CURRENT_DATE()-1 )
GROUP BY ActivityDate
这样我就明白了
Users |ActivityDate
1 |2014-09-19
如果没有匹配行,则我需要0
e、 g
我该怎么做。查询
你可以用工会
SELECT COUNT( iContactId ) AS Users, CURRENT_DATE() AS ActivityDate
FROM contacts WHERE iAppId =".$iAppId."
AND DATE(dCreatedAt) = CURRENT_DATE()
UNION
SELECT COUNT( iContactId ) AS Users, CURRENT_DATE() - 1 AS ActivityDate
FROM contacts WHERE iAppId =".$iAppId."
AND DATE(dCreatedAt) = CURRENT_DATE() - 1
查询
在大多数答案中,这是用于日期减法:
SELECT CURRENT_DATE() - 1
-> 20140919
这将导致隐式类型转换,并且日期将转换为int,请改用此选项:
SELECT CURRENT_DATE - INTERVAL 1 DAY
-> 2014-09-19
我的解决方案
SELECT
d.ActivityDate,
COUNT(c.iContactId) Users
FROM
(
SELECT CURRENT_DATE - INTERVAL 1 DAY ActivityDate FROM DUAL
UNION
SELECT CURRENT_DATE FROM DUAL
) d
LEFT JOIN
contacts c
ON DATE(c.dCreatedAt) = d.ActivityDate
AND c.iAppId = " . $iAppId . "
GROUP BY d.ActivityDate
很抱歉,忘记删除计数()我需要计数和日期。@pln需要您解释。我在匹配的日期行中获得20140920作为日期格式
SELECT CURRENT_DATE() - 1
-> 20140919
SELECT CURRENT_DATE - INTERVAL 1 DAY
-> 2014-09-19
SELECT
d.ActivityDate,
COUNT(c.iContactId) Users
FROM
(
SELECT CURRENT_DATE - INTERVAL 1 DAY ActivityDate FROM DUAL
UNION
SELECT CURRENT_DATE FROM DUAL
) d
LEFT JOIN
contacts c
ON DATE(c.dCreatedAt) = d.ActivityDate
AND c.iAppId = " . $iAppId . "
GROUP BY d.ActivityDate