通过另一个表中的列更新一个表中的列

Sno*_*ard 4 sql oracle oracle10g sql-update tablecolumn

我有2张桌子'A'和'B'.两者都有一个共同的列'name',并通过列'id'相互链接.表A中的列'name'是空的,而它有表B中的数据.我的任务是将表B中该列中的所有数据填充到具有相应ID的表A.

我正在使用以下查询:

UPDATE A
SET A.name = (SELECT B.name from B WHERE A.id = B.id)
WHERE EXISTS
(SELECT B.name from B)
Run Code Online (Sandbox Code Playgroud)

一旦我在SQL开发人员中运行查询,它就会冻结,我必须强行关闭它.谁能告诉我查询有什么问题?

Len*_*rri 6

试试这个:

UPDATE A
SET A.name = (SELECT B.name FROM B WHERE B.id = A.id AND B.name IS NOT NULL)
WHERE a.name IS NULL;
Run Code Online (Sandbox Code Playgroud)

由于您使用的是Oracle,因此这里是IS NOT NULL的引用.

这是SQL小提琴,所以你可以玩它:http://sqlfiddle.com/#!4/a5ad0/3