【问题标题】:Comparing two tables - Oracle SQL developer比较两个表 - Oracle SQL 开发人员
【发布时间】:2020-11-17 14:16:42
【问题描述】:

我正在尝试比较 oracle sql developer 中的两个表。 需要从具有不同 C 列值但相同 A 和 B 列值的两个表中获取行列表。

谢谢, 迪帕

【问题讨论】:

  • 展示你迄今为止的努力
  • table ddl 会很好。甚至可能为这些表添加一些潜在的插入。
  • 样本数据和期望的结果会使问题更清楚。

标签: sql oracle datatables compare


【解决方案1】:

在我解释问题时,您可以使用join

select t1.*, t2.*
from table1 t1 join
     table2 t2
     on t1.a = t2. a and t1.b = t2.b
where t1.c <> t2.c;

这将返回两个表中匹配ab 的所有行对,但c 的值不一样。

【讨论】:

    【解决方案2】:

    如果C列是某种数字,你应该使用下面的方法,你不会重复出现:

    select t1.*,
           t2.*
      from table1 t1,
           table2 t2
     where t1.a = t2.a
       and t1.b = t2.b
       and t1.c < t2.c;
    

    【讨论】:

    • 今日提示:始终使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接!
    【解决方案3】:

    使用以下潜在对象的潜在答案。

    表 ddl

    create table a_Table( 
    colum1  varchar2(20),
    colum2  varchar2(20),
    colum3  varchar2(20)
    );
    
    create table b_Table( 
    colum1  varchar2(20),
    colum2  varchar2(20),
    colum3  varchar2(20)
    );
     --POTENTIAL INSERT --        
    INSERT INTO B_TABLE (COLUM1, COLUM2, COLUM3) VALUES ('A', 'A', 'B');
    INSERT INTO B_TABLE (COLUM1, COLUM2, COLUM3) VALUES ('A', 'A', 'D');
    INSERT INTO A_TABLE (COLUM1, COLUM2, COLUM3) VALUES ('A', 'A', 'C');
    INSERT INTO A_TABLE (COLUM1, COLUM2, COLUM3) VALUES ('A', 'A', 'D');
    
    
    
    
      --QUERY TO FIND THE DIFF --
    
    
    SELECT
        a.*,
        b.*
    FROM
             a_table a
        JOIN b_table b 
        ON a.colum1 = b.colum1
        AND a.colum2 = b.colum2
    WHERE   a.colum3 != b.colum3;
    

    【讨论】:

    • 今日提示:始终使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接!
    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 2022-07-19
    • 2012-03-21
    • 2021-01-08
    • 2020-06-06
    • 2012-07-05
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多