drop table a;
CREATE TABLE IF NOT EXISTS a (id int,员工 Nvarchar(10),年龄 int,职业 nvarchar(10)) ;
insert a select 1, '001', 18 ,'教授' ;
insert a select 2, '002' , 18 , '教授' ;
insert a select 3, '003' , 18, '教授' ;
drop table b;
CREATE TABLE IF NOT EXISTS b(id int,代码 varchar(10),姓名 nvarchar(10),密码 int);
insert b select 1 ,'001', '张三' ,33 ;
insert b select 2 , '002' , '李四' ,33 ;
insert b select 3, '003' , 'aa' , 33 ;
情况一:
错误:update a set 员工=(select 员工 from a where id=1) where id>2,因为不能同时对一个表查询和更新,换个名字就可以(如下)
正确:update a set 员工=(select 员工 from (select 员工 from a where id=1) as b) where id>2
情况二:
错误:udpate a set a.员工=b.代码 where a.员工 in (select 代码 from b)
正确:update a inner join b on a.员工=b.代码 set a.员工=b.姓名
情况三:
正确:update a set a.员工='测试' where a.员工 in (select 代码 from b)