ホームページ > データベース > mysql チュートリアル > エラーを受信せずに MySQL で重複する行を削除するにはどうすればよいですか?

エラーを受信せずに MySQL で重複する行を削除するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-04 03:02:29
オリジナル
936 人が閲覧しました

How Can I Delete Duplicate Rows in MySQL Without Receiving an Error?

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート