ホームページ >データベース >mysql チュートリアル >エラーを受信せずに MySQL で重複する行を削除するにはどうすればよいですか?
MySQL での重複行の削除: ユニークなテーブル トリック
データベース内の重複レコードの処理は、一般的な問題点となる可能性があります。 MySQL では、これらの重複の削除は一連の手順で実行できます。特定のシナリオを段階的に見て、途中で起こり得る落とし穴に取り組んでみましょう。
「empid」、「empname」、および「empssn」フィールドを持つ「employee」という名前のテーブルがあるとします。重複レコードを特定するには、クエリを実行して各 'empssn' の出現をカウントします。
<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
このクエリは、どの 'empssn' が複数回出現するかを示す行を返します。
次に、次のクエリを使用して重複レコードを削除しようとします:
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);</code>
残念ながら、このクエリではエラーが発生する可能性があります:「FROM 句で更新するターゲット テーブル 'employee' を指定できません。」
このエラーを回避するには、派生テーブル内で内部クエリをラップする手法を使用できます。
<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>
この派生テーブルは効果的に一時テーブルとして機能し、ターゲットを参照できるようになります。
このトリックを実装することで、「employee」テーブルから重複レコードを正常に削除できます。このソリューションは、技術的なハードルを解決するだけでなく、MySQL でのデータベース操作についてのより深い理解を提供します。
以上がエラーを受信せずに MySQL で重複する行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。