这个错误也只有mysql会出现,mssql及oracle不会出现,只要将SELECT出的结果再通过中间表SELECT一遍,这样就规避了错误。
例如:
DELETE FROM T_Person上面在mysql下肯定会报错,我们只要改下sql,在中间再增加一层select,修改后如下:
WHERE pName IN (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1);
DELETE FROM T_Person
WHERE pName IN (SELECT pName FROM (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1 ) AS temp);
网友回复