Sql 我需要以特定方式进行更新的帮助
我将尽可能多地描述我的问题。这有点难以解释,但我会尽力解释 基本上,我在一个叫做MDM的Oracle框架上工作,我不能改变逻辑或表设计。幸运的是,我使用的表是定制的,所以它不在框架下 该表的设置如下所示: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
|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
值?在这种情况下,您只需要一个连接更新