SQL查询一个表中另外一个表不存在的数据。

现在有一个业务场景,两张表SY_USER 表 SY_ORG表

其中SY_ORG表的ORGID  = SY_USER表的USERNAME 

现在有一个需求 要求剔除 A表中(USER) 相对于B表(ORG)表 多余的数据 根据对应关系

编写sql代码 

查询出两张表中的重复项

select DISTINCT  u.username from SY_USER u where u.username 
  in (select o.ORG_ID from SY_ORG o)

查询出A表中相对于B表多余的数据

select DISTINCT  u.username 
from SY_USER u where u.username 
 NOT in (select o.ORG_ID from SY_ORG o)

删除A表中相对于B表多余的数据

 
 delete SY_USER ur where UR.username IN
(select DISTINCT  u.username from SY_USER u where u.username 
 NOT in (select o.ORG_ID from SY_ORG o))

关于distinct 关键字使用方法

SELECT DISTINCT 列名称 FROM 表名称

使用distinct 关键字只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段。distinct关键字也可以用作多余项的删除 如本文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值