【发布时间】:2018-12-11 07:41:03
【问题描述】:
我的表中有三个字段,我想通过三次加入另一个表来更新它们。我知道我必须使用merge into,但是我找不到任何类似的查询,它使用merge into 和join 多次只使用一个表。
select 语句是这样的:
select * from TABLE t
inner join DESTINATION_TABLE d1
on t.CODE1 = d1.CODE
inner join DESTINATION_TABLE d2
on t.CODE2 = d2.CODE
inner join DESTINATION_TABLE d3
on t.CODE3 = d3.CODE
现在如何使用d1、d2 和d3 中的字段更新TABLE 中的三个字段(FIELD1、FIELD2、FIELD3)? p>
编辑:
原来的查询是:
select * from TOTAL
inner join GROUP_LEVEL_DETAIL gl1
on gl1.NAME = substr(GL, 1, instr(GL, ' -', 1))
inner join GROUP_LEVEL_DETAIL gl2
on GL2.NAME = replace(substr(GL, instr(GL, ' -', 1, 1), instr(GL, ' -', 1, 2) - instr(GL, ' -', 1, 1)), ' - ', '')
inner join GROUP_LEVEL_DETAIL gl3
on gl3.NAME = replace(substr(GL, instr(GL, '-', 1, 2), 500), '- ', '')
TOTAL 的样本数据为:
ID GL GL1_CODE GL2_CODE GL3_CODE
----- ----------------------------- ---------- ---------- -----------
1 Sample1 - Sample2 - Sample3 null null null
2 John - Jack - Harry null null null
GROUP_LEVEL_DETAIL 的样本数据为:
CODE NAME LEVEL_NO
--------- ----------- ------------
SMP1 Sample1 1
SMP2 Sample2 2
SMP3 Sample3 3
JCK1 Jack 1
JHN2 John 2
HRY3 Harry 3
我希望我的TOTAL 表在更新后变成这样:
ID GL GL1_CODE GL2_CODE GL3_CODE
----- ----------------------------- ---------- ---------- -----------
1 Sample1 - Sample2 - Sample3 SMP1 SMP2 SMP3
2 John - Jack - Harry JCK1 JHN2 HRY3
【问题讨论】:
-
我认为您需要提供一些样本数据和预期结果,或者您可以设置问题演示,例如dbfiddle.uk
-
字段属于哪个表,由d1 d2 d3中的哪些列更新???
-
好的,我把原始查询和真实数据放上来。
-
@APC 现在我更新了问题。我不是故意浪费任何人的时间。我只是这样写的,以防止过于复杂。
标签: sql oracle sql-update oracle10g