【发布时间】:2020-03-18 04:19:36
【问题描述】:
抱歉这个非常基本的新手数据库问题...
我有两个具有相同列的表,但我想将第一个表中的一个列的值替换为第二个表中相应列的值。
即table1:姓名、年龄 table2:姓名、年龄
每个表都有相同的“名称”值,只是年龄不同。
算法:对于table1中的每一行,找到table2中同名的行,使table1.age = table2.age
数据库是甲骨文。我试过类似的东西
update table1 set table1.age = (select table2.age where table2.name = table1.name)
认为它可能会在需要时进行隐式连接,但没有运气。我也尝试过明确地进行内部连接,但没有运气。
谢谢!
【问题讨论】:
-
您编写的查询看起来完全没问题。 “没有运气”是什么意思?你收到错误了吗?什么都没发生(即没有更新行)?如果可能,发布一个测试用例(通过编辑问题,而不是作为评论)。
-
您是否收到类似
ORA-01427的错误消息? -
等待认真讨论如何使用常识来存储“年龄”而不是日期...。您真的希望在日期到来时使用新年龄更新表格(您从未保存的日期..因此您得到的信息不一致)
-
感谢大家的回答和 cmets。原来是数据问题。我应该意识到第二个表中有一个欺骗,因为错误类似于“单行子查询返回多行”。
标签: oracle sql-update