使用 Oracle 将 2 列从联结 table 合并为一列
Using Oracle combine 2 coloumns into one from junction table
我接管了一个 Oracle 数据库,但几乎所有东西都在一个 table 中。这是一场彻头彻尾的噩梦。所以我创建了一些联结 table 来尝试 trim 详细 table。但是我对如何将 2 个字段转换为一个字段感到困惑。例如下面。
这是详细信息的示例 table。目前,帐户和任务 ID 在 2 个单独的列中。
我已经包含了一个 acc_task_id。我需要用来自连接点 table 的 acc_Task_id 进行填充。帐户和 task_id 匹配的地方。一旦完成。
我将从详细信息 table.
中删除帐户和任务 ID
- 甲骨文 11g
- 350 万行
这将如何结束。
您可以使用 WHERE EXISTS
:
UPDATE detail_tbl dt
SET dt.acc_task_id = ( SELECT at.acc_task_id FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id )
WHERE EXISTS ( SELECT 1 FROM FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id );
请注意,我使用 NVL(acc_id, -1)
(假设 -1
不是该列的有效值)因为 NULL = NULL
不起作用。
我接管了一个 Oracle 数据库,但几乎所有东西都在一个 table 中。这是一场彻头彻尾的噩梦。所以我创建了一些联结 table 来尝试 trim 详细 table。但是我对如何将 2 个字段转换为一个字段感到困惑。例如下面。
这是详细信息的示例 table。目前,帐户和任务 ID 在 2 个单独的列中。
我已经包含了一个 acc_task_id。我需要用来自连接点 table 的 acc_Task_id 进行填充。帐户和 task_id 匹配的地方。一旦完成。 我将从详细信息 table.
中删除帐户和任务 ID- 甲骨文 11g
- 350 万行
这将如何结束。
您可以使用 WHERE EXISTS
:
UPDATE detail_tbl dt
SET dt.acc_task_id = ( SELECT at.acc_task_id FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id )
WHERE EXISTS ( SELECT 1 FROM FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id );
请注意,我使用 NVL(acc_id, -1)
(假设 -1
不是该列的有效值)因为 NULL = NULL
不起作用。