Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果列--MySQL中没有结果,则获取0值_Mysql_Sql_Select - Fatal编程技术网

如果列--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