繁体   English   中英

比较 2 个 Oracle 11g 表中的列

[英]Compare columns in 2 Oracle 11g tables

我在 Oracle 11g 中有 2 个表,其中一个包含实际源数据和另一个掩码数据。

该表大约有 1260000 行。

我要比较的列是 Varchar。

我正在尝试检查所有数据是否已被屏蔽为与原始数据不同的值。

我正在执行 select 查询,在连接 1 上有 2 个条件。具有唯一行标识符 2。我要比较的值。

查询在执行时永远不会返回。

有没有办法获得 output ,我可以在其中看到两个表中值相同的行?

我就是这样理解这个问题的。

例如,我创建了 Scott 的EMP表和“屏蔽”名称的“副本”:

SQL> create table emp2 as select * From emp;

Table created.

SQL> update emp2 set ename = translate(ename, 'AEIOU', '98765');

14 rows updated.

SQL> select empno, ename from emp2 order by empno;

     EMPNO ENAME
---------- ----------
      7369 SM7TH
      7499 9LL8N
      7521 W9RD
      7566 J6N8S
      7654 M9RT7N
      7698 BL9K8
      7782 CL9RK
      7788 SC6TT
      7839 K7NG
      7844 T5RN8R
      7876 9D9MS
      7900 J9M8S
      7902 F6RD
      7934 M7LL8R

14 rows selected.

要检查哪些名称不同:

SQL> select a.empno, a.ename, b.ename
  2  from emp a join emp2 b on a.empno = b.empno
  3  where a.ename <> b.ename
  4  order by a.empno;

     EMPNO ENAME      ENAME
---------- ---------- ----------
      7369 SMITH      SM7TH
      7499 ALLEN      9LL8N
      7521 WARD       W9RD
      7566 JONES      J6N8S
      7654 MARTIN     M9RT7N
      7698 BLAKE      BL9K8
      7782 CLARK      CL9RK
      7788 SCOTT      SC6TT
      7839 KING       K7NG
      7844 TURNER     T5RN8R
      7876 ADAMS      9D9MS
      7900 JAMES      J9M8S
      7902 FORD       F6RD
      7934 MILLER     M7LL8R

14 rows selected.

SQL>

或者,在您的情况下,由于您希望查看未更改的值,您可以将第 3 行修改为

where a.ename = b.ename

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM