繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM