Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我需要以特定方式进行更新的帮助_Sql_Oracle_Plsql - Fatal编程技术网

Sql 我需要以特定方式进行更新的帮助

Sql 我需要以特定方式进行更新的帮助,sql,oracle,plsql,Sql,Oracle,Plsql,我将尽可能多地描述我的问题。这有点难以解释,但我会尽力解释 基本上,我在一个叫做MDM的Oracle框架上工作,我不能改变逻辑或表设计。幸运的是,我使用的表是定制的,所以它不在框架下 该表的设置如下所示: |DOMAIN|SECOND_NAME|SOME_VALUES| | X | XX |28309128312| | X | XX |11121309011| | Y | YY |55583202300| | Z | ZZ

我将尽可能多地描述我的问题。这有点难以解释,但我会尽力解释

基本上,我在一个叫做MDM的Oracle框架上工作,我不能改变逻辑或表设计。幸运的是,我使用的表是定制的,所以它不在框架下

该表的设置如下所示:

|DOMAIN|SECOND_NAME|SOME_VALUES|
|   X  |     XX    |28309128312|
|   X  |     XX    |11121309011|
|   Y  |     YY    |55583202300|
|   Z  |     ZZ    |00000912323|
如您所见,该表有3列; 一个称为域,第二个称为第二个_名称,第三个称为一些_值

该表的逻辑如下: 对于每个域,域可以租用的每个值都会出现很多次

因此,如果我有域X,我可以在我的表中找到许多不同的记录,它们的值不同,但域相同

真正的问题是:

对于每个域,都关联一个类似别名的第二个名称。 别名不会根据某些_值更改,如果记录的domain=x,则第二个名称将为XX

我在Excel工作表上有一个second_name值列表,我必须用它更新second_name列

是否可以编写一个更新脚本,对于每个名为X的域,我将使用第二个名称xx编写更新脚本,对于每个名为Y的域,我将使用第二个名称YY编写更新脚本,依此类推


我有109个域,当然还有109个第二个名称,但是在表中有大约20000条记录,当然也有一些具有相同域的记录,如上面的示例表。

假设您在名为
my\u mapping
的数据库表中有Excel文件的内容,使用列
domain
second\u name
,您可以执行这个简单的
UPDATE
语句,它使用相关子查询来恢复相关的
second\u name

UPDATE mytable t SET second_name = (
    SELECT m.second_name
    FROM my_mapping m
    WHERE m.domain = t.domain
);

映射表中两列的组合应该是唯一的。

假设您在名为
my\u mapping
的数据库表中有Excel文件的内容,其中包含
domain
second\u name
,您可以执行此简单的
UPDATE
语句,使用相关子查询恢复相关的
第二个\u名称

UPDATE mytable t SET second_name = (
    SELECT m.second_name
    FROM my_mapping m
    WHERE m.domain = t.domain
);

映射表中两列的组合应该是唯一的。

所需的结果将非常有用。表中是否已经有
第二个名称
值?在这种情况下,您只需要一个join updated所需的结果就可以了。表中是否已经有
second\u name
值?在这种情况下,您只需要一个连接更新