sql - 我需要帮助以特定方式完成更新
问题描述
我将尽可能多地描述我的问题。它有点难以解释,但我会尝试。
基本上我在一个名为 MDM 的 Oracle 框架上工作,我无法更改逻辑或表设计。幸运的是,我使用的表格是自定义的,所以它不在框架下。
表是这样设置的:
|DOMAIN|SECOND_NAME|SOME_VALUES|
| X | XX |28309128312|
| X | XX |11121309011|
| Y | YY |55583202300|
| Z | ZZ |00000912323|
如您所见,该表有 3 列;第一个称为域,第二个称为 second_name,第三个称为 some_values。
这个表的逻辑是:对于每个域,域可以租用的每个值都有很多次出现。
因此,如果我有域 X,我可以在我的表中找到许多不同的记录,这些记录将具有不同的值但相同的域。
真正的问题是:
对于每个域,都关联一个 second_name,例如别名。别名不会根据 SOME_VALUES 更改,如果记录的域 = x,则第二个名称将为 XX。
我在 Excel 工作表上有一个 second_name 值列表,我必须用它更新列 SECOND_NAME。
是否可以编写一个更新脚本,对于每个名为 X 的域,我将写入 second_name xx,对于每个名为 Y 的域,我将写入 second_name YY 等等。
我有 109 个域,当然还有 109 个 second_name,但在表中有类似 20.000 条记录,当然还有一些与示例表相同的域。
解决方案
假设您在名为 的数据库表中拥有 Excel 文件的内容my_mapping
,其中包含列domain
和second_name
,您可以执行这个简单UPDATE
的语句,该语句使用相关的子查询来恢复相关的second_name
:
UPDATE mytable t SET second_name = (
SELECT m.second_name
FROM my_mapping m
WHERE m.domain = t.domain
);
映射表中两列的组合应该是唯一的。
推荐阅读
- sql - 大查询:在所有表中查找所有包含“姓氏”的列名
- php - 如何从常量数组中获取类?
- assembly - 如何为 q35 机器制作简单的引导程序
- .net - 工作负载修复失败:`dotnet 工作负载修复 - MAUI
- javascript - dming 用户不再工作,discord.js
- haskell - 我如何证明如果 sum list = 10,那么 sum list == sum (reverse list)?
- javascript - Firebase 创建记录不适用于 PROD
- wordpress-gutenberg - 如何防止内容覆盖背景图片?
- java - JavaFX 控制器在实例化时为空
- java - 如何在单独的方法中使用主 java 文件中的字符串?