[解決済み] MySQLで1行を除くすべての重複行を削除しますか?[重複している]
2022-03-21 02:05:01
質問
MySQLのテーブルから重複するデータをすべて削除するにはどうすればよいですか?
例えば、以下のようなデータの場合。
SELECT * FROM names;
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+
私なら
SELECT DISTINCT name FROM names;
であれば
SELECT
のクエリを実行します。
でどうやるんだ?
DELETE
重複したものだけを削除して、それぞれ1つのレコードだけを残すようにするには?
解決方法は?
<ブロッククオートエディタからの警告です。この解決策は計算効率が悪く、大きなテーブルを使用すると接続が切れる可能性があります。
NB - あなた が必要です。 を実行する必要があります。 テストコピー テーブルの
やってみると、これも入れなければ
AND n1.id <> n2.id
を実行すると、テーブルのすべての行が削除されます。
-
が最も低い行を残しておきたい場合。
id
の値を指定します。DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
-
が最も高い行を残しておきたい場合は、その行の
id
の値を指定します。DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
MySQL 5.1では、この方法を使用しました。
他のバージョンについては不明です。
更新: 重複排除でググるとここに行き着くので
OPの質問は
DELETE
を使用することをお勧めします。
INSERT
と
DISTINCT
の方がはるかに高速です。800万行のデータベースの場合、以下のクエリは13分かかりました。
DELETE
2時間以上かかっても完了しませんでした。
INSERT INTO tempTableName(cellId,attributeId,entityRowId,value)
SELECT DISTINCT cellId,attributeId,entityRowId,value
FROM tableName;
関連
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
MySQLの一般的な分割ライブラリおよび分割テーブルスキームの概要
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] MySQLの重複レコードを検索する
-
[解決済み] 重複するインデックスを持つpandasの行を削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLインストールチュートリアル(Windows用)詳細
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
MySQLインデックスベースストレステストの実装
-
MySQL インタビューの質問 - ハッシュインデックスを設定する方法
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
[解決済み】MySQLで「すべての派生テーブルは独自のエイリアスを持つ必要があります」というエラーは何ですか?
-
MySQL 接続タイムアウト。エラー SQLSTATE[HY000] [2002] 接続がタイムアウトしました 解決済み
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] MySQLで重複した行を削除する