我需要查看表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)