SQL |如何比较两个具有相同结构的表

时间:2019-12-06 13:01:56

标签: sql

我有两个具有相同结构的表,T_1 = [A,B,C] T_2 = [A,B,C]。它们内部的值之间存在差异。如何使用查询获取这些值?

致谢

3 个答案:

答案 0 :(得分:0)

您可以使用group by和聚合来获取一个表而不是另一个表中的值:

select sum(in_1), sum(in_2), a, b, c
from ((select 1 as in_1, 0 as in_2, a, b, c
       from t_1
      ) union all
      (select 0, 1, a, b, c
       from t_2
      )
     ) tt
group by a, b, c
having sum(in_1) <> sum(in_2);

请注意,这是非常通用的。它处理列中的NULL值。它还可以处理表中的重复项,以确保计数相同。

答案 1 :(得分:0)

您可以尝试一种简单的编码方式,但是性能不够好

(select * from T_1
 minus
 select * from T_2)
union all
( 
 select * from T_2
 minus
 select * from T_1
) ;

如果您正在寻找其他方法,建议您检查一下 http://www.dba-oracle.com/t_convert_set_to_join_sql_parameter.htm

答案 2 :(得分:0)

选择*从表1 除 SELECT * FROM TABLE2