gpt4 book ai didi

c# - 表数据对比——Oracle

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:37 24 4
gpt4 key购买 nike

我有两个表,它们具有相同的列和相同的数据。其中一个表的数据可能更新了,我需要展示一个数据对比。结果数据集应该只包含新的、删除的或修改的行。考虑以下数据。

表1数据

EmployeeId  EmployeeName

10001 Ned Stark
10002 Jon Snow
10003 Robb Stark

表2数据

EmployeeId  EmployeeName

10001 Eddard Stark
10002 Jon Snow
10004 Arya Stark

数据比较结果(格式如下):

EmployeeId1 EmployeeName1 EmployeeId2 EmployeeName2

10001 Ned Stark 10001 Eddard Stark
10003 Robb Stark NULL NULL
NULL NULL 10004 Arya Stark

我怎样才能达到这个结果?我考虑过使用连接,但我担心性能。另外,键可以不是简单的数字键,也可以是包含2个或更多列的组合键。以所需格式实现这种比较的最佳方式是什么?

最佳答案

Een full join 返回一行,即使左侧或右侧缺失:

select  *
from Table1 e1
full join
Table2 e2
on e1.EmployeeID = e2.EmployeeID
where nvl(e1.EmployeeName,'-') <> nvl(e2.EmployeeName,'-')

where 子句表示 EmployeeName 列中一定有更改。 nvl 调用是必需的,因为外连接在未找到匹配时返回 null,并且与 null 的比较永远不会成功。

关于c# - 表数据对比——Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com