SQL语句UPDATE 多表关联的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句UPDATE 多表关联的相关的知识,希望对你有一定的参考价值。

表1 tbl_goods,表2 tbl_design_film .更新 表1中的standards 字段=表2中的standards 字段当 表1中的film=表2中的 id。
但下面的语句不可用
update tbl_goods set tbl_goods.STANDARDS=tbl_design_film.STANDARDS from tbl_goods,tbl_design_film where tbl_goods.FILM=tbl_design_film.ID;

语句没有语法错误,你用的什么数据库?
有些很早期的数据库,或者是很简单的数据库是不支持多表查询的,比如access97等
你这个在执行的时候有报错吗,你能把执行后的日志打出来吗?追问

[SQL] update tbl_goods set tbl_goods.STANDARDS=tbl_design_film.STANDARDS from tbl_goods,tbl_design_film where tbl_goods.FILM=tbl_design_film.ID;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'from tbl_goods,tbl_design_film where tbl_goods.FILM=tbl_design_film.ID' at line 1

追答

update a
set STANDARDS=b.STANDARDS
from tbl_goods a,tbl_design_film b
where a.FILM=b.ID

我实在是看不出你的语法哪里有问题,我重写了一次,在查询分析器里面编译,已经通过了,你看这个可以通过吗
刚才我把你这段东西放到sqlserver2005上面分析了一下,语法也没有问题,很奇怪的现象
如果还是不正常,你可能得要检查你的数据库安装了
行了,我查过了,这个数据库果然就是早期不支持多表关联查询的数据库之一,写法就是下面两位的说法了

追问

还是不行。。我也不晓得怎么回事。。昨天还可以呢

追答

我刚才查了一下,好像mysql有好多版本就是不支持连表查询的,你这段时间有修改过吗
如果支持连表查询的话,这个语句是没问题的,我已经在sqlserver上面测试过了,语法通过,实验也正常。

追问

update tbl_goods set STANDARDS= (select STANDARDS from tbl_design_film where tbl_design_film.id=tbl_goods.film)

参考技术A 语法不对

这样写:
update tbl_goods
set tbl_goods.STANDARDS=
(select
tbl_design_film.STANDARDS
from tbl_goods,tbl_design_film
where tbl_goods.FILM=tbl_design_film.ID);

并且确定子查询只能有一条记录
参考技术B update tbl_goods a
set a.STANDARDS=(select b.STANDARDS
from tbl_design_film b
where a.FILM=b.ID)
===闲得没事,服务大家,解决问题========

SQL Server 2008 update语句只能更新1行数据?

SQL Server 2008 update语句只能更新1行数据?非得1次履行?分两次履行不得了?

参考技术A 那用两个update语句不行吗?你的语句里TSpeed的确出现了两次,要不可以研究下case……when语法(oracle里有)
查看原帖>>
采纳哦
参考技术B 那用两个update语句不行吗?你的语句里tspeed的确出现了两次,要不可以研究下case……when语法(oracle里有)

以上是关于SQL语句UPDATE 多表关联的的主要内容,如果未能解决你的问题,请参考以下文章

多表关联UPDATE语句怎么写呀?

SQl update 多表关联 问题

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句