web-dev-qa-db-fra.com

Comment trouver des lignes en double basées sur plusieurs champs dans MySQL?

Duplicata possible:
Mysql Duplicate Rows (Duplicata détecté en utilisant 2 colonnes)

Dans une base de données MySQL, j'ai plusieurs lignes. Par exemple:

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

Comment puis-je sélectionner des lignes dans une base de données en fonction du uniquement titre et de heure? Les domaines ou identifiants en double ne sont pas concernés, seuls les deux autres champs.

Je veux pouvoir récupérer les lignes 32, 33 et 36 car elles ont des titres et des heures identiques.

Je ne veux pas avoir à mettre un titre ou une heure, je veux que la requête renvoie tous les champs où il y a une correspondance "en double" trouvée sur ces deux champs, que ce soit seulement deux ou 50. De cette façon, je peux parcourir et modifiez ou supprimez certains des doublons.

28
Codexer1912

Voici ce que tu veux

SELECT title, time  
  FROM table
GROUP BY title, time
  HAVING count(*) > 1
64
kasi
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
               )
32
Wolfgang