MySQL报错:You can't specify target table '表名' for update in FROM clause的解决办法

MySQL报错:You can't specify target table '表名' for update in FROM clause
错误的大概意思是:不能先select出同一张表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值。

需要注意:这个问题只出现于MySQL,MSSQL和Oracle不会出现此问题。

报错sql语句

insert into crm_department(name,pid,description) values ('人力资源中心',0,'');
insert into crm_department(name,pid,description) values ('人事',(select id from crm_department where name = '人力资源中心'),'');

更改后的sql语句:

insert into crm_department(name,pid,description) values ('人力资源中心',0,'');
set @pid = (select id from crm_department where name = '人力资源中心');
insert into crm_department(name,pid,description) values ('人事',@pid,'');

用set @ 定义变量先获取到需要查询的值,下面放变量就行了。

你可能感兴趣的:(MySQL,MySQL)