Mysql

You can’t specify target table ‘wms_material_io’ for update in FROM clause的 mysql异常处理

删除页面重复数据时出现:"You can't specify target table 'wms_material_io' for update in FROM clause",此时做个子查询中间表存起来在删除

-- 原SQL
DELETE FROM wms_material_io WHERE WML_MES_ID in(
	SELECT wmi.WML_MES_ID FROM wms_material_io wmi WHERE wmi.WML_MES_CREATETIME<'2016-12-27 00:00:00'
	GROUP BY wmi.WML_MES_ID HAVING COUNT(*)>1
);

-- 改进后SQL
DELETE FROM wms_material_io WHERE WML_MES_ID in(
	SELECT temp.WML_MES_ID FROM (
		SELECT wmi.WML_MES_ID FROM wms_material_io wmi WHERE wmi.WML_MES_CREATETIME<'2016-12-27 00:00:00'
		GROUP BY wmi.WML_MES_ID HAVING COUNT(*)>1
	)AS temp	
);

留言

您的电子邮箱地址不会被公开。 必填项已用*标注