如果在第二个表中找不到记录,则显示包含0的所有行



我需要查看表A中的所有记录,如果在表B上没有找到匹配的记录,则显示0和相应的A值。

SELECT r.date
, l.total_user
FROM daterange r
LEFT 
JOIN logs l
ON r.date = l.created_date
WHERE r.date BETWEEN '2020-09-14' AND '2020-11-14' AND   l.view_id =(SELECT view_id from logs where user_id = 63)

在上面的查询中,日志表中不存在一些记录,但我也需要带日期的0。

想知道如何解决这个问题吗?请

我需要日期范围表中从"2020-09-14"到"2020-11-14"的所有日期

假设您想要coalesce():

select d.date, coalesce(l.total_user, 0) as total_user
from daterange d 
left join logs l on d.date = l.created_date
where d.date between '2020-09-14' and '2020-11-14'

logs表中没有给定date的匹配项时,这将为total_user而不是null返回0。当然,这假定列total_user一开始是数字数据类型。

请注意,表别名使查询更易于编写和读取。

您可以使用IFNULL((函数。

SELECT r.date
, IFNULL(l.total_user, 0)
FROM daterange r
LEFT 
JOIN logs l
ON r.date = l.created_date
WHERE r.date BETWEEN '2020-09-14' AND '2020-11-14' AND   l.view_id =(SELECT 
view_id from logs where user_id = 63)

最新更新