not exists用法 再举例

本文将介绍如何通过SQL查询找出两张表中的新增数据,详细解释了错误的解法,并提供了正确的解决方法,包括使用NOT EXISTS和NOT IN等查询技巧。适用于经过整理的临时表对比场景。

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

这个鸟东西,每次用它都郁闷啊!

 

举个例子吧,假如有2张表,表结构一样,一张称为tableOld,一张称为tableNew。

 

其中有个字段ID。

 

tableOld有1000条数据,而tableNew数据有1050条数据。

 

其实在新表中的1050条数据包括了旧表的1000条数据,那么现在想把这50条数据找出。

 

该如何办呢?

 

错误解法:

 

select * from  tableNew n
where   not exists
(
	select * from  tableOld  o  inner join  n on n.id=o.id
)

 

 

没什么大错误,只是括号里面不能这样写,要写笛卡尔积,而不能用inner join这种方式。

 

 

正解一:not exists

 

 

select * from  tableNew n
where   not exists
(
	select * from  tableOld o where n.id=o.id
)

 

 

正解二:not in(提前想好要判断哪几个字段不在某个集合里,这里想的是id)

 

 

select * from  tableNew n
where   id not in 
(
	select id from  tableOld  o
)

 

 

ps:这2张表一般是经过整理的临时表。

 

refurl:http://shenzhenchufa.blog.51cto.com/730213/269152

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值