使用PL / SQL Developer比较两个SELECT语句

时间:2016-03-29 06:05:18

标签: sql oracle plsqldeveloper

假设我在同一个表上有两个SELECT查询,我需要逐列比较它们。

查询1:

select * from mytable t1 where  t1.code = '100'

返回:

id           name
1            A
2            B

查询2:

select * from mytable t2 where  t2.code = '999'

返回:

id           name
1            A
2            C

对于我的情况,两个查询都返回相同的行数。

期望的结果

id           name_t1     name_t2
2            B           C

如何使用 PL / SQL开发人员(更好地使用工具来避免查询)找到它们之间的数据差异?

我的PL / SQL开发人员   版本 8.0.3.1510

3 个答案:

答案 0 :(得分:4)

您可以使用MINUS

select * from mytable t1 where  t1.code = '100'

MINUS 
select * from mytable t2 where  t2.code = '999';

MINUS通过从结果中删除仅在第二个查询中找到的所有行,为您提供在第一个查询中找到但不在第二个查询中找到的行

答案 1 :(得分:2)

有很多方法可以检查两个查询之间的区别;如果您需要在数据集之间存在差异,可以尝试File file = new File(".\\File"); //This take the file which are in the same folder that exe.

MINUS

通过合并两个SQL> select * from mytable t1 where t1.code = '100' 2 minus 3 select * from mytable t2 where t2.code = '999'; ID CODE NAME ---- ---- ---------- 1 100 A 2 100 B SQL> select * from mytable t2 where t2.code = '999' 2 minus 3 select * from mytable t1 where t1.code = '100'; ID CODE NAME ---- ---- ---------- 1 999 A 2 999 C ,您可以MINUS

T1-T2 AND T2-T1

如果您需要检查字段差异,请根据'键'字段,您需要SQL> select 'T1 MINUS T2' TYPE, t1_t2.* from 2 ( 3 select * from mytable t1 where t1.code = '100' 4 minus 5 select * from mytable t2 where t2.code = '999' 6 ) t1_t2 7 union all 8 select 'T2 MINUS T1' TYPE, t2_t1.* from 9 ( 10 select * from mytable t2 where t2.code = '999' 11 minus 12 select * from mytable t1 where t1.code = '100' 13 ) t2_t1; TYPE ID CODE NAME ----------- ---- ---- ---------- T1 MINUS T2 1 100 A T1 MINUS T2 2 100 B T2 MINUS T1 1 999 A T2 MINUS T1 2 999 C

JOIN

答案 2 :(得分:0)

选择id,t1.name为name_t1,t2.name为name_t2 来自myTable t1 右键加入myTable t2 右连接t1.name = t2.name 其中t1.name为null