2

重複の可能性:
MySQL で重複する行を削除する

次のようなテーブル「recipientscore」があります。

  • 受信者 ID / メッセージ ID
  • 1 / 1
  • 2 / 2
  • 3 / 2
  • 4 / 2
  • 5 / 3
  • 6 / 4

やりたいことは、2 回以上出現するすべてのレコードを削除することです。重複レコードごとに 1 つのバージョンを保持したくありません。クリーンアップ後は次のようになります。

  • 受信者 ID / メッセージ ID
  • 1 / 1
  • 5 / 3
  • 6 / 4

それを行う方法についてのアイデアはありますか?

ありがとう!

4

2 に答える 2

2
delete from recipientscore
where messageid in
(
   select * from
   (
      select messageid from recipientscore
      group by messageid
      having count(*) > 1
   ) x
)

SQLFiddle デモ

于 2012-12-01T17:55:25.793 に答える
0

「ユルゲン d」の答えは完璧です。一意の行を 1 つだけ保持し、残りの重複行を削除する場合は、これを試すことができます。

ALTER IGNORE TABLE recipient score  ADD UNIQUE KEY idx1(messageid); 
于 2012-12-01T17:57:45.297 に答える