データベース管理では、多くの場合、テーブルから重複レコードを削除する必要があります。 MySQL では、これを実現するためのさまざまな方法が提供されています。
一般的なアプローチの 1 つは、次のようなクエリを使用して重複行を識別することです。
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
このクエリは、empssn カラムに重複した値を持つ行を識別します。これらの重複を削除するには、次のクエリを使用できます:
DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);
ただし、この方法では、「FROM 句で更新するターゲット テーブル 'employee' を指定できません。」というエラーが発生する可能性があります。これに対処するには、サブクエリを派生テーブルでラップします。
DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT empid, empssn FROM (SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn) X);
派生テーブルを使用すると、エラーなくサブクエリで元のテーブルを参照できます。このアプローチでは、元のデータ構造を維持しながら、従業員テーブル内の重複行を正常に削除できます。
以上が「ターゲット テーブルを指定できません...」エラーを発生させずに SQL テーブルから重複行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。