[英]Show all rows with 0 if no records found on second table
我需要查看表 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
返回0
而不是null
。 当然,这假定列total_user
是数字数据类型。
请注意,表别名使查询更易于编写和读取。
您可以使用 IFNULL() function。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.