将表中的单个数据行更新为另一个

roa*_*242 2 sql oracle oracle10g

如何使用另一个表中的数据行更新完整的数据行.

例:

Table A

ID   |   NAME    |   ...   |
----------------------------
 1   |   Test    |   ...   |
 2   |   Test2   |   ...   |



Table B

ID   |   NAME    |   ...   |
----------------------------
 1   |   Test97  |   ...   |
Run Code Online (Sandbox Code Playgroud)

所以我想将表B的单行内容复制到表A并覆盖现有值.我不想命名所有列.表A和表B的内容是多余的.

总结: 我希望将以下INSERT语句等效为UPDATE语句:

INSERT INTO destTable 
VALUES  (SELECT * FROM TABLE2)
FROM srcTable 
Run Code Online (Sandbox Code Playgroud)

任何提示,甚至告诉我它不可能,都非常适合.

Vin*_*rat 6

您可以更新一组列(您仍然需要列出一次列):

SQL> UPDATE table_a
  2     SET (ID, NAME, etc)
  3         = (SELECT * FROM table_b WHERE table_b.id = table_a.id)
  4   WHERE table_a.id IN (SELECT ID FROM table_b);

1 row updated
Run Code Online (Sandbox Code Playgroud)