フィールド '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 FROM従業員 WHERE (empid, empssn) NOT IN (...)」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。