表1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
表2:
id name desc
-----------------------
1 x 123
2 y 345
在oracle SQL中,如何运行sql update查询,使其可以使用表2的name
更新表1,并使用相同的desc
更新表1?所以我得到的最终结果是
表1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
问题取自update one table with data from another,但专门针对oracle SQL。
发布于 2011-08-12 03:05:22
这称为关联更新。
UPDATE table1 t1
SET (name, desc) = (SELECT t2.name, t2.desc
FROM table2 t2
WHERE t1.id = t2.id)
WHERE EXISTS (
SELECT 1
FROM table2 t2
WHERE t1.id = t2.id )
假设连接的结果是一个保留键的视图,您还可以
UPDATE (SELECT t1.id,
t1.name name1,
t1.desc desc1,
t2.name name2,
t2.desc desc2
FROM table1 t1,
table2 t2
WHERE t1.id = t2.id)
SET name1 = name2,
desc1 = desc2
发布于 2015-09-24 04:22:49
试试这个:
MERGE INTO table1 t1
USING
(
-- For more complicated queries you can use WITH clause here
SELECT * FROM table2
)t2
ON(t1.id = t2.id)
WHEN MATCHED THEN UPDATE SET
t1.name = t2.name,
t1.desc = t2.desc;
发布于 2011-08-12 02:08:50
试一试
UPDATE Table1 T1 SET
T1.name = (SELECT T2.name FROM Table2 T2 WHERE T2.id = T1.id),
T1.desc = (SELECT T2.desc FROM Table2 T2 WHERE T2.id = T1.id)
WHERE T1.id IN (SELECT T2.id FROM Table2 T2 WHERE T2.id = T1.id);
https://stackoverflow.com/questions/7030699
复制相似问题