A表2个字段a,b,分别存储公司ID和用户ID
B表2个字段c,d,分别存储公司ID和用户ID
2个表的公司和用户 都是一对多的关系。
由于操作原因,导致A表里面出现了错误数据,有几十条数据是错误的-----错误数据里面,公司ID正确,但是用户ID错填成其他公司的用户ID了。
B表即关系表的数据是绝对正确的
我想通过AB联查,查找出A里面的错误数据
6 个解决方案
#1
不考虑效率的话, 可以用 select A.* from A where A.a||A.b not in (select B.a||B.b from B); 如果数据量大 可以用中间表。
#2
SELECT * FROM A WHERE (A, B) NOT IN (SELECT C, D FROM S);
#3
SELECT * FROM A t WHERE NOT EXISTS (SELECT 1 FROM B WHERE a=t.a AND b=t.b);
#4
minus也可以呀
#5
SELECT A.*
FROM A LEFT JOIN B
ON A.A=B.C AND A.B=B.D
WHERE B.C IS NULL
#6
select * from a where exists(select 1 from b where b.c=a.a and b.d!=a.b) 试试
#1
不考虑效率的话, 可以用 select A.* from A where A.a||A.b not in (select B.a||B.b from B); 如果数据量大 可以用中间表。
#2
SELECT * FROM A WHERE (A, B) NOT IN (SELECT C, D FROM S);
#3
SELECT * FROM A t WHERE NOT EXISTS (SELECT 1 FROM B WHERE a=t.a AND b=t.b);
#4
minus也可以呀
#5
SELECT A.*
FROM A LEFT JOIN B
ON A.A=B.C AND A.B=B.D
WHERE B.C IS NULL
#6
select * from a where exists(select 1 from b where b.c=a.a and b.d!=a.b) 试试