LEFT JOIN 多条件排除第二个表中数据

本文深入解析如何使用SQL的LEFT JOIN结合WHERE子句,实现从左表中排除在右表中存在的数据,包括单条件和多条件排除技巧。通过具体示例,帮助读者掌握排除法在数据库查询中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写数据库查询语句时遇到多个条件排除另一个表中数据的问题,故记录下总结,如有错误请指出。

单条件排除:

	SELECT * FROM  TABLE_A A LEFT JOIN TABLE_B B ON A.ID = B.A_ID 
	WHERE B.A_ID IS NULL

首先我们来了解下什么是LEFT JOIN:

LEFT JOIN 关键字会从左表 ( TABLE_A) 那里返回所有的行,即使在右表 (TABLE_B) 中没有匹配的行。
所以说我们查询结果为TABLE_A表中所有数据加上TABLE_B 表中符合A.ID = B.A_ID的数据。如果没有符合该条件的数据。则在后面补NULL。
所以我们在 WHERE后添加B.A_ID IS NULL则从查询结果中排除了TABLE_A 数据在TABLE_B中有对应匹配的数据。

多条件排除:
在多条件排除时,由于LEFT JOIN 会返回 左表所有内容,所以在ON后面继续添加条件进行筛选还是会返回所有的内容,如果我们条件不只是A.ID = B.A_ID还要满足A.ID>10的数据, 以下方法并不会排除掉TABLE_A中 A.ID < 10 的内容,而是排除掉TABLE_A中A.ID < 10A.ID = B.A_ID 的数据。

	SELECT * FROM  TABLE_A A LEFT JOIN TABLE_B B ON A.ID = B.A_ID AND  A.ID>10 
	WHERE B.A_ID IS NULL    

如果希望 排除TABLE_A中 A.ID < 10 的数据需要将条件添加到WHERE 后面

	SELECT * FROM  TABLE_A A LEFT JOIN TABLE_B B ON A.ID = B.A_ID  
	WHERE B.A_ID IS NULL OR A.ID>10     

总结:如果想排除右表中的数据 则将条件添加到ON后面 ,如果想排除左表中的数据(查询出来的数据),则将条件添加到WHERE后面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值