我正在尝试编写(我认为是直接的)更新查询,但是因为我是SQL的新手,所以它有点麻烦。
我的情景:
表1
Parent Child Alias
--------------------------
New Member1 AliasABC
New Member2 AliasDEF
New Member3 AliasGHI
表2
Parent Child Alias
--------------------------
Parent08 Member8 Alias08
Parent09 Member2 Alias09
Parent10 Member9 Alias10
查询结果应如下所示:
表1
Parent Child Alias
--------------------------
New Member1 AliasABC
Parent09 Member2 AliasDEF
New Member3 AliasGHI
如果Table2中已存在Child,并且保持其他所有内容不变,我只想更新Parent列。我已尝试使用更新相关查询,但已绘制空白。
更新
此查询部分成功:
update TABLE1 p1
set (p1.PARENT) = (
select p2.PARENT
from TABLE2 p2
where p2.CHILD = p1.CHILD
)
结果:
表1
Parent Child Alias
--------------------------
(null) Member1 AliasABC
Parent09 Member2 AliasDEF
(null) Member3 AliasGHI
提前致谢,
标记
答案 0 :(得分:2)
如果你想在Oracle中这样做,你需要一个相关的子查询:
update table1
set parent = (select parent from table2 where table2.child = table1.child)
where exists (select 1 from table2 where table2.child = table1.child);
这是标准SQL,应该适用于所有数据库,尤其是Oracle。
答案 1 :(得分:1)
update
(select a.parent p1,a.child,b.parent p2
from table1 a, table2 b
where a.child= b.child )
set p1 = p2;
答案 2 :(得分:1)
我认为这会为oracle做到这一点:
UPDATE table1
SET
table1.Parent =
(
SELECT table2.Parent
FROM table2
WHERE table1.Child = table2.Child
)
WHERE
EXISTS (SELECT table2.Parent
FROM table2
WHERE table1.Child = table2.Child);