sql - 将单个数据行从表更新到另一个

标签 sql oracle oracle10g

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

例子:

Table A

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



Table B

ID   |   NAME    |   ...   |
----------------------------
 1   |   Test97  |   ...   |

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

总结: 我想要一个等效于以下 INSERT 语句的 UPDATE 语句:

INSERT INTO destTable 
VALUES  (SELECT * FROM TABLE2)
FROM srcTable 

任何提示,甚至告诉我这是不可能的,都是非常适用的。

最佳答案

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

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

关于sql - 将单个数据行从表更新到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2356056/

相关文章:

oracle - Oracle 中的 TO_DATE 错误

database - 如何创建Oracle数据库的dmp文件?

mysql - 使用 `LIKE` 进行查询的操作数计数错误

c# - C# 中的 SQL 连接字符串

mysql - 尝试编写查询但不知道该怎么做

mysql - 如何内连接mysql查询的查找表?

oracle - 未通过 SQLPlus 脚本的参数的默认值

sql - Oracle 计数 (*) 花费太多时间

Oracle - SELECT-INSERT 锁定模式

oracle - 如何使用 pl/sql 打印字符串而不在末尾附加换行符