从包含字段“empid”、“empname”的名为“employee”的表中删除重复记录,和 'empssn',首先使用查询来识别它们:
<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
但是,后续删除查询:
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );</code>
在指定目标表 'employee' 时遇到错误FROM 子句。
解决方案:
要解决此错误,请将子查询包装在派生表中:
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );</code>
此修改允许您在子查询中引用原始表并成功删除重复行。
以上是为什么在 MySQL 中删除重复项时出现“DELETE FROMEmployee WHERE (empid, empssn) NOT IN (...)\”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!