orale update一张表的字段为另一张表的字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了orale update一张表的字段为另一张表的字段相关的知识,希望对你有一定的参考价值。
update TAGOUT set t.location=(select l.location from locations l) from TAGOUT t,location l where
t.location=(select l.oldlocation from l.location where t.location=l.oldlocation)
ora-00933:SQL 命令未正确结束
这样试试,运行前注意备份一下你的tagout表,避免出问题恢复不了
update TAGOUT set t.location=(select l.location from locations where t.location=l.oldlocation)where t.location in (select oldlocation from locations) ;追问
麻烦把完整的写下来,别名表。
追答别名表是什么意思?
上边少了个t,你用这个吧
update TAGOUT t set t.location=(select l.location from locations where t.location=l.oldlocation)where t.location in (select oldlocation from locations) ;备份的话
create table tagout_bak as select * from tagout;
就好了
追问l.location别名没写,我想知道你不用from怎么别名两个表
追答慌乱了,拿你之前那个改的
update TAGOUT t set t.location=(select l.location from locations l where t.location=l.oldlocation)where t.location in (select oldlocation from locations);追问
那就是说你一个 t.location对应了多个l.oldlocation的情况,这种情况下,随便给t.location赋值就行吗?
参考技术A update tagout t1set location=(select location from locations t2 where t2.oldlocation=t1.location) 参考技术B
总觉得逻辑不对,试试这个
UPDATE TAGOUT TSET T.LOCATION = (SELECT L.LOCATION
FROM LOCATIONS L
WHERE T.LOCATION = L.OLDLOCATION)
WHERE T.LOCATION = L.OLDLOCATION 参考技术C 看没有看明白意思,最好把表字段说明下~~追问
就是A表里面的location等于B表里面的oldlocation,更新A表里面的location为B表里面的location
mysql使用一张表的数据更新另一张表update
以上是关于orale update一张表的字段为另一张表的字段的主要内容,如果未能解决你的问题,请参考以下文章