32

重複の可能性:
Mysql Duplicate Rows (2 つの列を使用して重複が検出されました)

MySQL データベースには多くの行があります。例えば:

id | title   | time  | domain
32   title1    12:30   domain1.com
33   title1    12:30   domain2.com
34   title2    14:20   domain1.com
35   title3    14:30   domain2.com
36   title1    12:30   domain55.com

タイトルと時間のみに基づいてデータベースから行を選択するにはどうすればよいですか? 重複するドメインまたは ID は問題ではなく、他の 2 つのフィールドのみが問題になります。

行 32、33、および 36 を取得できるようにしたいのは、これらの行には同じタイトルと同じ時間が含まれているためです。

タイトルや時間を入力する必要はありません。クエリで、これら 2 つのフィールドで「重複」一致が見つかったすべてのフィールドが返されるようにしたいのですが、それが 2 つまたは 50 だけであるかどうかは関係ありません。重複の一部を編集または削除します。

4

2 に答える 2

65

これがあなたが望むものです

SELECT title, time  
  FROM table
GROUP BY title, time
  HAVING count(*) > 1
于 2012-10-02T13:53:07.523 に答える
38
select distinct id, title, time
  from table t1
 where exists (select * 
                 from table t2 
                where t2.id <> t1.id
                  and t2.title = t1.title
                  and t2.time = t1.time
               )
于 2012-10-02T13:39:14.400 に答える