2 votes

Recherche de doublons éventuels en SQL

J'ai besoin d'un code SQL qui identifiera les éventuels doublons dans une table. Disons que ma table a 4 colonnes :

  • ID (clé primaire)

  • Date1

  • Date2

  • GroupID

(Date1, Date2, GroupID) forment une clé unique.

Cette table est remplie de blocs de données à la fois, et il arrive souvent qu'un nouveau bloc soit chargé et contienne un certain nombre d'enregistrements qui s'y trouvent déjà. Cela ne pose aucun problème tant que la clé unique les capture. Malheureusement, il arrive que Date1 soit vide (ou du moins '1900/01/01'), que ce soit lors du premier téléchargement ou des téléchargements suivants.

Ce dont j'ai besoin, c'est de quelque chose qui identifie les cas où la combinaison (Date2, GroupID) apparaît plus d'une fois et où pour un des enregistrements Date1 = "1900/01/01

Gracias

Karl

0voto

wgpubs Points 2652
select * from table a
join (
select Date2, GroupID, Count(*)
from table
group by Date2, GroupID
having count(*) > 1
) b on (a.Date2 = b.Date2 and a.GroupID = b.GroupID)
where a.Date1 = '1900/01/01'

0voto

Bill Karwin Points 204877

C'est la manière la plus directe à laquelle je pense pour le faire :

SELECT DISTINCT t1.*
FROM t t1 JOIN t t2 USING (date2, groupid)
WHERE t1.date1 = '1900/01/01';

Pas besoin d'utiliser GROUP BY qui est peu performant sur certaines marques de bases de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X