mysql update注意

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)

猜你喜欢

转载自sangei.iteye.com/blog/2271804
今日推荐