解决方案 »

  1.   

    使用intersect和minus求交集或差集
    --A比B少的
    select id from B
    MINUS
    select id from A
    --A比B多的
    select id from A
    MINUS
    select id from B
    --关键字相同,其他字段存在不同的
    with T AS(
    select id from A
    intersect
    select id from B)
    SELECT * FROM A WHERE ID IN (SELECT ID FROM T)
    MINUS
    SELECT * FROM B WHERE ID IN (SELECT ID FROM T)
      

  2.   

    A比B少的select t2.*, 1 flag
    from a t1,b t2
    where t1.id(+)=t2.id
    and t1.id is null;A比B多的select t1.*, 2 flag
    from a t1,b t2
    where t1.id=t2.id(+)
    and t2.id is null;A和B id相同其他字段值不同的select t1.*,3 flag
    from a t1,b t2
    where t1.id=t2.id
    and( t1.字段1 !=t2.字段1 or t1.字段2 !=t2.字段2 or t1.字段3 !=t2.字段3)
      

  3.   


    T是什么?这是正确的写法么?我一共就AB表,怎么还出来个T?
      

  4.   

    with as的用法,你百度下就明白了
    关于oracle with as用法
      

  5.   

    1、如果A比B少的
    select id from B
    MINUS
    select id from A
    2、如果A比B多的
    select id from A
    MINUS
    select id from B
    3、关键字相同,其他字段存在不同的
    with T AS(
    select id from A
    intersect
    select id from B)
    SELECT * FROM A WHERE ID IN (SELECT ID FROM T)
    MINUS
    SELECT * FROM B WHERE ID IN (SELECT ID FROM T)