1、这个你自己备份一个表然后测试一下就知道了。 2、我喜欢这样写,你那个写法太混乱了,好像还有错: UPDATE b set b.智商值 =a.智力值 FROM 智力表 a INNER JOIN 学生表 b ON a.姓名=b.姓名 AND b.省份='浙江'
可以用事务执行以下,看看效果就知道了,效果应该是一样的begin tran update 学生表 set 智商值 =(select 智商值 from 智力表 where 智力表.姓名 = 学生表.姓名) where 学生表.省份='浙江'select * from 学生表 where 省份='浙江' rollbackbegin tran update 学生表 set 智商值 =(select 智商值 from 智力表 where 智力表.姓名 = 学生表.姓名 and 学生表.省份='浙江') select * from 学生表 where 省份='浙江' rollback --如果确认没问题可以用commit提交还有一点,关联最好要用学号,不要用姓名,如果有重名的学生,你的语句就要报错了
2、我喜欢这样写,你那个写法太混乱了,好像还有错:
UPDATE b
set b.智商值 =a.智力值
FROM 智力表 a INNER JOIN 学生表 b ON a.姓名=b.姓名 AND b.省份='浙江'
update 学生表 set 智商值 =(select 智商值 from 智力表 where 智力表.姓名 = 学生表.姓名) where 学生表.省份='浙江'select * from 学生表 where 省份='浙江'
rollbackbegin tran
update 学生表 set 智商值 =(select 智商值 from 智力表 where 智力表.姓名 = 学生表.姓名 and 学生表.省份='浙江') select * from 学生表 where 省份='浙江'
rollback
--如果确认没问题可以用commit提交还有一点,关联最好要用学号,不要用姓名,如果有重名的学生,你的语句就要报错了