现在有A表和B表,A表是业务表,B表是关系表。
A表2个字段a,b,分别存储公司ID和用户ID
B表2个字段c,d,分别存储公司ID和用户ID
2个表的公司和用户 都是一对多的关系。
由于操作原因,导致A表里面出现了错误数据,有几十条数据是错误的-----错误数据里面,公司ID正确,但是用户ID错填成其他公司的用户ID了。
B表即关系表的数据是绝对正确的
我想通过AB联查,查找出A里面的错误数据

解决方案 »

  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.   


    SELECT A.* 
        FROM A LEFT JOIN B 
            ON A.A=B.C AND A.B=B.D
     WHERE B.C IS NULL
      

  5.   


    select * from a where exists(select 1 from b where b.c=a.a and b.d!=a.b) 试试