发布日期:2018-03-26
在SQL中如何使用join做一个更新声明+ 查看更多
在SQL中如何使用join做一个更新声明
+ 查看更多
发布日期:2018-02-23 09:58
分类:SQL
浏览次数:110
问题描述:在sql server 2005我需要使用一个父表更新一个表,如下:
sale
sale
id (int) udid (int) assid (int)
ud
id (int) assid (int)sale.assid 包含更新ud.assid的当前值,什么语句可以做这个,我想应该是join 但我不确定
回答:
这里有不同DBMS的不同方法,但是如果你使用以下几种DBMS以外的方法,只能使用ISO标准方法。
ANSI/ISO:
update ud set assid = ( select sale.assid from sale where sale.udid = ud.id ) where exists ( select * from sale where sale.udid = ud.id );
MySQL:
update ud u inner join sale s on u.id = s.udid set u.assid = s.assid
SQL Server:
update u set u.assid = s.assid from ud u inner join sale s on u.id = s.udid
Oracle:
update (select u.assid as new_assid, s.assid as old_assid from ud u inner join sale s on u.id = s.udid) up set up.new_assid = up.old_assid