在 Oracle 中使用 SQL 检查表是否相同

Jac*_*skI 3 sql oracle compare

我在面试初级 Oracle 开发人员职位时被问到这个问题,面试官承认这是一个很难的问题:

编写一个查询/查询以检查表 'employees_hist' 是否是表 'employees' 的精确副本。任何想法如何解决这个问题?

编辑:考虑到表可以有重复的记录,因此在这种情况下简单的 MINUS 将不起作用。

例子

EMPLOYEES

NAME
--------
Jack Crack
Jack Crack
Jill Hill
Run Code Online (Sandbox Code Playgroud)

这两者不会完全相同。

EMPLOYEES_HIST

NAME
--------
Jack Crack
Jill Hill
Jill Hill
Run Code Online (Sandbox Code Playgroud)

A B*_*A B 5

如果表具有相同的列,则可以使用它;如果两个表中的行相同,这将不返回任何行:

(
select * from test_data_01
minus
select * from test_data_02
)
union
(
select * from test_data_02
minus
select * from test_data_01
);
Run Code Online (Sandbox Code Playgroud)