首页 > 解决方案 > 我怎样才能只更新一个表的一些值,这些值不是一个接一个或按顺序用plsql中的新值?

问题描述

假设有一张员工表:

ID PERSON_NAME PERSON_telephonenumber
1 约翰 525323
2 缺口 624534
3 乔治 134355
4 账单 676346

我怎样才能只更新 nick 和 bill 的 person_telephonenumber 和我从 excel 文件中获得的新号码?而且不止两个值。请帮忙!

先感谢您

标签: sqloraclesql-update

解决方案


第一步是将两列的Excel电子表格制作成两列的Oracle表;让我们打电话给他们OLD_NUMBERNEW_NUMBER。我们称这张桌子为EXCEL_EXPORT。另外,您没有告诉我们电话号码的数据类型;假设它是varchar2(15)

如何将数据从 Excel 导入 Oracle 是一个不同的问题;我假设你已经这样做了,所以你知道怎么做。(“如何”取决于您使用什么与数据库交互;例如,我使用 SQL Developer,它为这种过程提供了非常简单的工具。)

然后,作为重要步骤,在表中创建 OLD_NUMBER 主键:

alter table excel_export modify (old_number primary key);

这允许您通过连接更新现有表:

update 
  ( select e.person_telephonenumber, ee.new_number
    from   employees e join excel_export ee
    on     e.person_telephonenumber = ee.old_number )
set person_telephonenumber = new_number
;

推荐阅读