用orcal实现考试库中部分人员无身份证号,若有身份证号可通过身份证与人员库中 的身份证进行匹配,若无身份证号则可通过姓名+出生年月+性别进行匹配(注 意考试库中字段非代码)。
时间: 2024-03-16 12:44:01 浏览: 59
好的,使用Oracle数据库实现考试库中部分人员无身份证号,若有身份证号可通过身份证与人员库中的身份证进行匹配,若无身份证号则可通过姓名+出生年月+性别进行匹配。可以使用如下的SQL语句实现:
```
MERGE INTO 人员库 t1
USING 考试库 t2
ON (t1.身份证号 = t2.身份证号 OR (t1.姓名 = t2.姓名 AND t1.性别 = t2.性别 AND t1.出生年月 = t2.出生年月))
WHEN MATCHED THEN
UPDATE SET t1.姓名 = t2.姓名, t1.性别 = t2.性别, t1.出生年月 = t2.出生年月, t1.最高学历 = CASE WHEN t1.最高学历 < t2.最高学历 THEN t2.最高学历 ELSE t1.最高学历 END, t1.职称级别 = CASE WHEN t1.职称级别 < t2.职称级别 THEN t2.职称级别 ELSE t1.职称级别 END
WHEN NOT MATCHED THEN
INSERT (t1.姓名, t1.性别, t1.出生年月, t1.身份证号, t1.最高学历, t1.职称级别)
VALUES (t2.姓名, t2.性别, t2.出生年月, t2.身份证号, t2.最高学历, t2.职称级别);
```
这个SQL语句中同样使用了MERGE语句,ON子句中使用了身份证号和姓名+出生年月+性别进行匹配,WHEN MATCHED THEN子句中进行了更新,WHEN NOT MATCHED THEN子句中进行了插入。同时,使用了CASE语句实现了“就高原则”更新最高学历和职称级别。
阅读全文