Question

Si mon titre fait mal votre tête ... Je suis avec vous. Je ne veux pas entrer dans pourquoi ce tableau existe, sauf qu'il fait partie d'un système existant, aussi le système ne « accès au niveau record » (RLA) et cela, je sais qu'il sera un problème pour de nombreuses tables, de toute façon la RLA est mentionné parce que l'ajout d'une colonne changer le format de table et de nombreux programmes très anciens ne fonctionnent plus ...

Il semble que l'ajout d'un PK a été montré de ne pas modifier le format de la table. Donc, on m'a dit qu'un certain jeu de clés est garantie être unique, bien ce que vous savez ... ce n'est pas. Et maintenant, je dois montrer où ils ne sont pas.

Tout ce que je peux penser est:

Obtenez le produit croisé où les matches de table sur c'est la clé primaire.

D'une certaine façon obtenir une colonne de comptage sur le jeu de résultats pour le nombre d'entrées où le PK correspond elle-même.

Filtre ce jeu de résultats pour les valeurs supérieures où identifiant de comptage 2.

Je vais voir si j'Allongez la PK suffisamment, je vais effectivement trouver quelque chose d'unique.

Était-ce utile?

La solution

Supprimer les contraintes / index uniques, insérer les données, puis exécutez cette requête:

SELECT col1, col2, ..., coln, COUNT(*)
FROM your_table
GROUP BY col1, col2, ..., coln
HAVING COUNT(*) > 1

col1, col2, ..., coln la liste des colonnes dans la clé (une des colonnes ou plus). Le résultat sera la liste des clés qui se produisent plus d'une fois avec un compte montrant à quelle fréquence ils se produisent.

Autres conseils

select col1, ... from tab group by col1, ... having count(*)>1;
SELECT * FROM (SELECT ID, COUNT(*) CNT FROM MY_TABLE GROUP BY ID) WHERE CNT > 1
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top