0

次の順序でデータベースを持っています

id  date        time        user_id     visits
---------------------------------------------------------------
1   02/19/13    1361257200  xxxxxxxxx   4699
2   02/20/13    1361343600  xxxxxxxxx   7264
3   02/21/13    1361430000  xxxxxxxxx   5281
4   02/21/13    1361430000  xxxxxxxxx   5281
5   02/22/13    1361516400  xxxxxxxxx   5473

ご覧のとおり、ID 3 の行は ID 4 の行 4 と同じです。そのうちの 1 つだけを削除したい (日付、時刻、user_id、および訪問の値はどちらも同じである必要があります)。データベース内の他の重複行 (数百)。そのようなことに使用しなければならないクエリについてはわかりません。いくつかの解決策を探してみましたが、同じ ID を持つか、行を新しいテーブルにコピーする必要があります。注: このクエリを複数回実行する必要がある場合でも、問題はありません。

ここに画像の説明を入力

4

2 に答える 2

2

ID の方法がオプションでない場合にできることは、一意のキーをテーブルに追加することです。

そのような.....

ALTER IGNORE TABLE  `tablename` ADD UNIQUE `keyname` (`date` ,`time` , `visits`);

キーが追加されると、テーブルは行を反復処理し、一致するもの (重複するもの) を削除します。これの欠点は、重複した行が再び表示されるのを防ぐことです....テーブルの使用によっては、問題になる場合とそうでない場合があります。

于 2013-04-08T22:29:17.087 に答える