现在有一个业务场景,两张表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关键字也可以用作多余项的删除 如本文。
现在有一个业务场景,两张表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.usern......
1. select distinct A.ID from A where A.ID not in (select ID from B);
2. select A.ID from A left join B on A.ID=B.ID where B.ID is null;
3. select * from B where (select count(1) as num from A wher
删除A
表
在B
表中
不存在
的记录
第一种方式
select * from A where not exists (select 1 from B where A.ID = B.ID)
第二种方式
select * from A where (select count(1) as num from B where B.ID = A.ID) =...
mysql
数据库
中一张
表
与另一张
表
有相同的
一个
字段,需要过滤出
表
t_camera 中在 t_sys_role_camera
表中
不存在
的
数据
,利用关键字 NOT EXISTS来实现。
同理可以使用EXISTS 关键字来查询一张
表
在另一张
表中
存在的
数据
。
SELECT
t_camera t
WHERE
NOT EXISTS (
SELECT
t_sys_role_camera...
SQL查询
~ 存在
一个
表
而不在另
一个
表中
的
数据
A、B两
表
,找出ID字段中,存在A
表
,但是
不存在
B
表
的
数据
。A
表
总共13w
数据
,去重后大约3W条
数据
,B
表
有2W条
数据
,且B
表
的ID字段有索引。
使用 not in ,容易理解,效率低 执行时间为:1.395秒
1 select distinct A.ID from A where A.ID not in (select ID from B)
使用 left join…on… , “B.ID isnull”
表
示左连接之后在B.ID
A、B两
表
,找出ID字段中,存在A
表
,但是
不存在
B
表
的
数据
。A
表
总共13w
数据
,去重后大约3W条
数据
,B
表
有2W条
数据
,且B
表
的ID字段有索引。
使用 not in ,容易理解,效率低 执行时间为:1.395秒
1 select distinct A.ID from A where A.ID not in (select ID from B)
使用 left join…on…...
一张
表
与另一张
表
有相同的
一个
字段,需要过滤出
表
law_firm 中在 push_record
表中
不存在
的
数据
,利用关键字 NOT EXISTS来实现。
同理可以使用 EXISTS 关键字来查询一张
表
在另一张
表中
存在的
数据
。
SELECT
law_firm f
WHERE
NOT EXISTS (
SELECT
push_record p
WHERE
SQL
Join子句,主要用在select语句中,把两个或多个
表
的行结合起来,基于这些
表
之间的共同字段(往往是id字段)来查询,从多个
表中
返回满足条件的所有行。常见join子句类型常见join子句类型有INNER JOIN(同JOIN)、LEFT JOIN、RIGHT JOIN、FULL JOIN,其中第一种为内连接,后三种为外连接。不同的join子句类型区别如下图所示:
介绍其中4种:
1、方法一(仅适用单个字段):使用 not in ,比较容易理解,缺点是效率低
如:select A.ID fro