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关键字也可以用作多余项的删除 如本文。

你可能感兴趣的:(sql)