SELECT *
  FROM a
 WHERE a.pk NOT IN (SELECT a.pk
                      FROM a, b
                     WHERE a.a1 = b.b1
                       AND a.a2 = b.b2
                       AND a.a3 = b.b3)a.pk代表你A表的主键.如何??

解决方案 »

  1.   

    zisuijing(紫水晶)
    谢谢你的回复。
    现在还有这么个问题
    由于b1,b2,b3 都可能被修改
    就可能出现以下的情况
    表A                      修改后的表B
    a1   a2   a3             b1   b2   b3
    aaa  aaa  aaa            aaa  aaa  aaa
    bbb  bbb  bbb            aaa  aaa  aaa
    ccc  ccc  ccc            ccc  ccc  ccc
    也就是说可能存在相同的行。
    这个要怎么判断呢?
      

  2.   

    select * from b
    minus
    select * from a
      

  3.   

    sasacat(傻傻猫)的方法似乎也不能解决上面的问题。
      

  4.   

    你那两个表都有主键吧.SELECT *
      FROM a
     WHERE a.pk NOT IN (SELECT a.pk
                          FROM a, b
                         WHERE a.a1 = b.b1
                           AND a.a2 = b.b2
                           AND a.a3 = b.b3 and a.pk=b.pk)
    由于你的是b是全部由a导入的.正常情况下主键也应该相同.所以把主键也加上去比不就行了嘛??如果
    主键可能不相同那就没办法了.
    或许你可以在A里加个字段.这个字段里装的是该记录在b中的主键值.
    然后再比一下也可