+
95
-

回答

这个错误也只有mysql会出现,mssql及oracle不会出现,只要将SELECT出的结果再通过中间表SELECT一遍,这样就规避了错误。

例如:

DELETE FROM T_Person
WHERE pName IN (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1);

上面在mysql下肯定会报错,我们只要改下sql,在中间再增加一层select,修改后如下:

DELETE FROM T_Person
WHERE pName IN (SELECT pName FROM (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1 ) AS temp);


网友回复

我知道答案,我要回答