Comment trouver les doublons dans la Ruche?
Je veux trouver des lignes en double de celui de la table de la Ruche pour laquelle on m'a donné deux approches.
Première approche consiste à utiliser deux requêtes suivantes:
select count(*) from mytable; // this will give total row count
deuxième requête est comme ci-dessous qui va donner le nombre de lignes distinctes
select count(distinct primary_key1, primary_key2) from mytable;
Avec cette approche, pour l'un de mes tableau total du nombre de lignes obtenues à l'aide de la première requête est 3500 et deuxième requête donne le nombre de lignes de 2700. Donc, il nous dit que 3500 - 2700 = 700
les lignes en double. Mais cette requête n'est pas de dire les lignes qui sont dupliqués.
Mon deuxième approche pour trouver des doublons est:
select primary_key1, primary_key2, count(*)
from mytable
group by primary_key1, primary_key2
having count(*) > 1;
Requête ci-dessus devrait liste de lignes qui sont dupliqués et combien de fois ligne particulière est dupliqué. mais cette requête indique zéro rangs ce qui signifie qu'il n'existe pas de lignes en double dans la table.
Donc je voudrais savoir:
- Si ma première approche est correcte - si oui, alors comment puis-je trouver les lignes qui sont dupliqués
- Pourquoi la deuxième approche ne fournit pas de liste de lignes qui sont dupliqués?
- Est-il un autre moyen de trouver les doublons?
- Votre deuxième approche suggère qu'il y a pas de doublons. Je voudrais vérifier les deux clés de
NULL
valeurs (la plupart des bases de données ne permettent pas deNULL
valeurs de clés primaires; peut-être la Ruche permet ce pour les clés composites). - Oui Ruche autorise les valeurs null pour les clés primaires. Elle affectera trouver les doublons?
- . . le comptage semble être désactivé. J'ai confiance dans la seconde approche.
Vous devez vous connecter pour publier un commentaire.
Comme des valeurs nulles et les doublons sont autorisés dans PI, vous devriez faire quelque chose comme ceci:
De cette façon, vous obtiendrez la liste des les lignes en double.
select count(*) - count(distinct [every column])
.count(distinct ...)
fonctionne exactement comme vous le souhaitez - compter le nombre de combinaisons uniques de colonnes de passer distinctes. Avec comme [1,2],[1,3],[2,3],[2,3] - serait de retourcount(distinct)
= 3analytique de la fenêtre de la fonction row_number() est très utile et peut fournir les doublons en fonction des éléments précisés dans la partition par la clause. Simplement dans la ligne de vue et existe clause sera alors de faire ressortir les ensembles correspondants des enregistrements contiennent ces doublons dans la table d'origine. Dans certaines bases de données (comme les TD, vous pouvez renoncer à la ligne de vue à l'aide d'un QUALIFIER pragma option)
SQL1 & SQL2 peuvent être combinés. SQL2: Si vous voulez traiter avec des valeurs nulles et non pas simplement rejeter, puis s'unir et de concaténation peut-être mieux dans le
3) Trouve tous les dossiers, et pas seulement l' > 1 enregistrements. Cela fournit toutes les données de contexte ainsi que les clés de sorte qu'il peut être utile lors de l'analyse de pourquoi vous avez des dup et pas seulement les clés.
Supposons que vous voulez obtenir un double des lignes en fonction d'une colonne particulière
ID
ici. Ci-dessous la requête va vous donner tous les Id qui sont en double dans le tableau dans la ruche.