错误信息:You can't specify target table 'xxxxx' for update in FROM clause
where cabf_id in (
SELECT 表名.cabf_id FROM 表名
Inner Join wms_cabinet ON 表名.cabf_cab_id = wms_cabinet.cab_id
Inner Join wms_cabinet_row ON wms_cabinet.cab_row_id =wms_cabinet_row.row_id
where wms_cabinet_row.row_site_id=27 and 表名.cabf_enabled=1)
解决方法:
原语句:
update 表名 set cabf_enabled=0
where cabf_id in (
SELECT 表名.cabf_id FROM 表名
Inner Join wms_cabinet ON 表名.cabf_cab_id = wms_cabinet.cab_id
Inner Join wms_cabinet_row ON wms_cabinet.cab_row_id =wms_cabinet_row.row_id
where wms_cabinet_row.row_site_id=27 and 表名.cabf_enabled=1)
更改后语句:
update 表名 set cabf_enabled=0 where cabf_id in (
SELECT a.cabf_id FROM (select tmp.* from 表名 tmp) a
Inner Join wms_cabinet b ON a.cabf_cab_id = b.cab_id
Inner Join wms_cabinet_row c ON b.cab_row_id = c.row_id
where c.row_site_id=29 and a.cabf_enabled=1)
百度来的方法,经测试可以用,具体机制原因不清楚
SELECT a.cabf_id FROM (select tmp.* from 表名 tmp) a
Inner Join wms_cabinet b ON a.cabf_cab_id = b.cab_id
Inner Join wms_cabinet_row c ON b.cab_row_id = c.row_id
where c.row_site_id=29 and a.cabf_enabled=1)
百度来的方法,经测试可以用,具体机制原因不清楚