两个表之间关联更新字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个表之间关联更新字段相关的知识,希望对你有一定的参考价值。

有两个表。现在我想用一条UPDATE语句更新A表中的end_date字段。数据来源于B表中的end_date字段,两个表之间用userid关联 a.userid=b.fk_userid,该怎样操作?

参考技术A update a.end_date = b.end_date from A a,B b where a.userid=b.fk_userid;追问

不行啊 ,你这个缺少set关键字的啊

追答

写错了

追问

你知道怎么做吗。我急用

追答

一定要更新基表吗?
简单点可以直接查询一下得出你要的结果:
select a.id,b.end_date from A a,B b where a.id=b.fk_userid;

追问

我是要更新表字段的的啊。只是查出来没用的啊

追答

补充:还想更新基表的话,就直接清除了基表的数据,
然后把这个查询的结果用insert into select * from 这个结果表 把数据弄进基表。

参考技术B update A set A.end_date=B.end_date from B on a.userid=b.fk_userid

SQL 关联两个表的视图总结

视图就是一条select查询语句,是一张虚拟表。

table a  , table b  以表a基表(a LEFT  JOIN b) 

1.1 当update view时 更新view中表b字段,可执行,并且b表随之改变。

    当update view时 更新view中表a字段,可执行,并且a表随之改变。

    当update view时 更新view中表a和表b,不可执行。

总结:更新view时 只能更新单一表字段,对应表随之改变。

1.2 当update 表a时 更新表a中view对应的字段时,可执行,并且view随之改变。

    当update 表b时 更新表b中view对应的字段时,可执行,并且view随之改变。

总结:更新相关联的表时,view中对应的字段随之改变。

2.1 当delete view时,不可执行。

总结:删除view中某个字段时,会改变两个表的字段,所以不可执行。

2.2 当delete 表a时,可执行,view中的记录不会删掉,只是与表a相对应的字段为空值。

  当delete 表b时,可执行,view中的记录不会删掉,只是与表b相对应的字段为空值。

总结:删除相关联表时,view中相对应的字段为空值。

3.1当insert view时,插入view中表a相对应的字段,可执行,并且a表随之插入。

 当insert view时,插入view中表b相对应的字段,可执行,并且b表随之插入。

  当insert view时,插入view中表a和表b相对应的字段,不可执行。

总结:插入view时,只能插入单一表相对应的字段,对应表也随之插入

3.2 当insert 表a时,可执行,如果满足视图on条件时,view随之插入相应的新纪录,否则,view不会随之插入相应的新纪录。

  当insert 表b时,可执行,如果满足视图on条件时,view随之插入相应的新纪录,否则,view不会随之插入相应的新纪录。

总结:插入相关联表时,只要满足创建view时的on条件,view随之插入新纪录。

 

根据以上实验结果,表的update,insert,delete都可以执行,只要满足创建view时的on条件,view也会随之update,insert,delete。

关联一个表的view,view的update,insert,delete都可以执行,表也会随之update,insert,delete。

关联多表的view,view的update,insert, 只有update,insert其中一个表的字段时可执行,这个表也随之update,insert;view的delete,不可执行。

 

以上是关于两个表之间关联更新字段的主要内容,如果未能解决你的问题,请参考以下文章

update 两个表关联 更新

mysql 3张表关联批量更新

update 更新多个表 SQL

sqlserver 关联表批量更新多行

两个表,根据条件批量更新其中一个表的某一列数据。(高分求救,在线等待。)

SQL Server数据库多表关联如何更新?