Quelle est l'instruction SQL la plus simple qui retournera les valeurs en double pour une colonne donnée et le nombre de leurs occurrences dans une table de base de données Oracle?
Par exemple: j'ai une JOBS
table avec la colonne JOB_NUMBER
. Comment savoir si j'ai des doublons JOB_NUMBER
et combien de fois ils sont dupliqués?
sql
oracle
duplicate-data
Andrew
la source
la source
Réponses:
la source
group by
, comme dans:select column_one, column_two, count(*) from tablename group by column_one, column_two having count(column_one) > 1;
etc.having count(*) > 1
: DAutrement:
Fonctionne bien (assez rapidement) quand l'index est activé
column_name
. Et c'est une meilleure façon de supprimer ou de mettre à jour les lignes en double.la source
Le plus simple que je puisse penser:
la source
Vous n'avez même pas besoin d'avoir le nombre dans les colonnes renvoyées si vous n'avez pas besoin de connaître le nombre réel de doublons. par exemple
la source
Que diriez-vous:
Pour répondre à l'exemple ci-dessus, cela ressemblerait à:
la source
Dans le cas où plusieurs colonnes identifient une ligne unique (par exemple une table de relations), vous pouvez utiliser les éléments suivants
Utilisez l'identifiant de ligne, par exemple emp_dept (empid, deptid, startdate, enddate) supposons que empid et deptid sont uniques et identifient la ligne dans ce cas
et si une telle table a une clé primaire, utilisez la clé primaire au lieu de rowid, par exemple id est pk alors
la source
Faire
vous donnera les identifiants des lignes dupliquées.
la source
la source
Je l'habitude d' utiliser Oracle analytique fonction ROW_NUMBER () .
Dites que vous voulez vérifier les doublons que vous avez concernant un index unique ou une clé primaire construite sur des colonnes (
c1
,c2
,c3
). Ensuite, vous irez de cette façon, en faisant apparaître desROWID
s de lignes où le nombre de lignes apportéesROW_NUMBER()
est>1
:la source
Voici une requête SQL pour ce faire:
la source
Je sais que c'est un vieux fil mais cela peut aider quelqu'un.
Si vous avez besoin d'imprimer d'autres colonnes du tableau tout en vérifiant l'utilisation en double ci-dessous:
peut également ajouter des filtres supplémentaires dans la clause where si nécessaire.
la source
1. solution
la source
Vous pouvez également essayer quelque chose comme ça pour répertorier toutes les valeurs en double dans une table, dites reqitem
la source