连表查询,右表数据为null,左表被过滤掉情况

本文探讨了在SQL查询中遇到的数据不全问题,主要表现为左连接时null数据被过滤以及右表数据未显示。提出了两种解决方案:一是直接使用LEFT JOIN并结合WHERE子句,但可能因条件过滤导致数据丢失;二是通过子查询分别计算每个用户的记录数,确保所有数据都被展示。这两种方法在数据查询和处理中具有实际应用价值。
摘要由CSDN通过智能技术生成

2021.01.08 显示不全,例如左表null数据被过滤,右表也不显示

#方法一:显示不全,例如左表null数据被过滤,右表也不显示
		SELECT
        s.name,
        count(*) 'count'
        from street_notice r
        left join sys_user s on s.id = r.user_id
        WHERE
        s.id = #{wbUserId}
        and r.s_createtime like concat('%',#{wbTime},'%')
        group by s.id
        
        
             
#方法二:解决方法一问题,分开查询
        		SELECT
        		s.name,
				(
				select count(*) from
				street_notice r
				where
				s.id = r.user_id and
				r.s_createtime like concat('%',#{wbTime},'%')
				) 'count'
        		from sys_user s
       			WHERE
        		s.id = #{wbUserId}
        		group by s.id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值