sql - 我如何检查现有记录并避免冗余数据
问题描述
我有两个表,都位于不同的服务器上,属于不同的模式。
表 1:SALARY_DETAIL_REPORT_[monthYearSuffix]
-与表 2 相同的副本。
表 2:XXMPCD_SALARY_DETAIL_TABLE
- 包含员工的工资相关数据,每个员工有多个工资代码,如HOUSE RENT ALLOW,DEARNESS ALLOW, NPS-Company Contri(Earning), BASIC PAY, NET EARNING, GROSS DEDUCTION, GROSS EARNING, GROSS DEDUCTION, NET EARNING, BASIC PAY, GRADE PAY
。
因此员工代码重复多次,因此我们无法维护主键或唯一索引。
假设在TABLE 2中推送了 1000 条记录,我需要将它们完全复制到我的TABLE 1中。这是由我的 SPRING 服务类处理的,一个 GUI 可用,我们只需单击迁移按钮,后台运行的服务从表 2中获取数据并将其插入到表 1中。
表 2中有两列
1.PICK_DATE
2.IS_DATA_PICKED
如果这两个数据都包含null
那只是意味着数据没有迁移到我们的表 1中,我们在成功迁移后通过确认更新了相同的列,因此下次数据将无法用于迁移。
问题
现在假设我们将 1000 条记录从TABLE 2迁移到TABLE 1。我做了什么,我回到我的 SQL DEVELOPER,选择 3 个随机记录并将它们的PICK_DATE
&设置IS_DATA_PICKED
为NULL
.
现在我又迁移了一次,再次插入了这 3 条记录。这意味着复制 3 条记录,1000 条记录变为 1003 条。
现在我要检查的内容:
如果存在相同的数据,则应该更新而不插入记录,这意味着覆盖。
TABLE 1:SALARY_DETAIL_REPORT_092018
SALARY_REPORT_ID
EMP_NAME
EMP_CODE
PAY_CODE
PAY_CODE_NAME
AMOUNT
PAY_MODE
PAY_CODE_DESC
YYYYMM
REMARK
EMP_ID
PRAN_NUMBER
PF_NUMBER
PRAN_NO
ATTOFF_EMPCODE
REFERENCE_ID
**
TABLE 2:XXMPCD_SALARY_DETAIL_TABLE
EMP_NAME
EMP_CODE
PAY_CODE
AMOUNT
PAY_MODE
PAY_CODE_NAME
YYYYMM
REMARK
PUSH_DATE
PICK_DATE
IS_DATA_PICKED
ERROR_MESG
REFERENCE_ID
PRAYAS_ERP_ORG_ID
ERP_ORG_ID
PF_NUM
PRAN_NO
VERIFIED_BY
解决方案
推荐阅读
- java - 使用 Apple (Netty) 的 ServiceTalk 作为带有 Jersey 的 RESTful API 并让我们加密 HTTPS
- r - GGplot 挑战
- iis - IIS 8.5 Windows Server 2012 ASP Classic/Active-X COM DLL 写入 UNC 共享文件夹时出现问题
- php - 为什么函数 rand 在方括号中?
- php - Wordpress - 显示部分内容
- spring - JPA 存储库按函数名称查询不等于
- java - 关于 Java 中的线程和回调的问题
- javascript - 根据用户选择将数据从 MYSQL 表输出到 HTML 表单
- botframework - Qnamaker API 替换变更
- node.js - 使用私钥生成加密签名