Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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左连接缺少结果_Mysql_Left Join - Fatal编程技术网

MySQL左连接缺少结果

MySQL左连接缺少结果,mysql,left-join,Mysql,Left Join,我试图查看是否有一些未使用的SIP编号,因此在tmp_编号表中有一个编号列表 我使用的查询是: SELECT n.number, COUNT(c.did) AS count FROM tmp_numbers n LEFT JOIN cdr c ON n.number = c.did WHERE c.calldate >= '2017-01-01' GROUP BY n.number ORDER BY n.number 我从上面的查询中得到了结果,但它忽略了在c上无法匹配

我试图查看是否有一些未使用的SIP编号,因此在tmp_编号表中有一个编号列表

我使用的查询是:

SELECT 
 n.number,
 COUNT(c.did) AS count

FROM tmp_numbers n

LEFT JOIN cdr c
 ON n.number = c.did 

WHERE c.calldate >= '2017-01-01'

GROUP BY n.number
ORDER BY n.number
我从上面的查询中得到了结果,但它忽略了在c上无法匹配的数字

我的印象是,左连接将匹配/显示左表上的所有内容(tmp_编号),而不管右侧是否有值(因此将显示NULL?)


这里缺少什么?

where
条件放入
左连接中。否则它会隐式地变成一个
内部联接
,因为
where
子句中的条件会过滤所有数据,如果
calldate
为NULL,则该条件为FALSE

LEFT JOIN cdr c ON n.number = c.did 
               AND c.calldate >= '2017-01-01'

where
条件置于
左连接中。否则它会隐式地变成一个
内部联接
,因为
where
子句中的条件会过滤所有数据,如果
calldate
为NULL,则该条件为FALSE

LEFT JOIN cdr c ON n.number = c.did 
               AND c.calldate >= '2017-01-01'

您正在查询
联接的
表中的一列,如果没有相应的条目,该列可能为
null
,因此将
WHERE
条件从:

其中c.calldate>=“2017-01-01”


其中c.calldate>='2017-01-01'或c.did为空

您正在查询
联接的
表中的一列,如果没有相应的条目,该列可能为
,因此将
WHERE
条件更改为:

其中c.calldate>=“2017-01-01”

其中c.calldate>='2017-01-01'或c.did为空