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 t1
set location=(select location from locations t2 where t2.oldlocation=t1.location)
参考技术B

总觉得逻辑不对,试试这个

UPDATE TAGOUT T
   SET 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

方法1

demo是将class_name赋值为 company

UPDATE work w 
SET w.class_name = (
	SELECT
		a.company 
	FROM
		( SELECT * FROM work ) a 
	WHERE
	a.id = w.id 
	)

方法2

update table_1 t1,table_2 t2 set t1.column = t2.column where t1.id = t2.pid;

以上是关于orale update一张表的字段为另一张表的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将一张表中的字符替换为另一张表的记录

MySQL用另一张表的字段值Update本表

sql怎么将一张表的字段赋值给另一张表

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

mysql使用一张表的数据更新另一张表update

db2如何实现用一张表的某个字段更新另一张表的相应字段。