Comment puis-je écrire une requête SQL afin d'identifier les valeurs en double dans un domaine particulier?
C'est le tableau que je suis en train de travailler avec:
Je voudrais seulement identifier les ReviewIDs qui ont en double déduction des Id pour les différents paramètres.
Par exemple, dans l'image ci-dessus, ReviewID 114 a deux différents paramètre Id, mais les deux disques ont le même ID de retenue.
Pour mes fins, ce record (ReviewID 114) comporte une erreur. Il ne devrait y avoir deux ou plus unique paramètre Id qui ont le même ID de retenue pour un seul ReviewID.
Je voudrais écrire une requête pour identifier ces types de documents, mais mes compétences SQL ne sont pas encore là. De l'aide?
Merci!
Mise à jour 1: je suis en utilisant TSQL (SQL Server 2008) si ça peut aider
Mise à jour 2: La sortie que je suis à la recherche seraient les mêmes que l'image ci-dessus, moins les enregistrements qui ne correspondent pas aux critères que je viens de décrire.
Cheers!
- Donc, dans cette image, les deux 114 dossiers devraient être présents, ainsi que 5 cas de review_id 124?
- c'est vrai, les enregistrements, les 13 et 14 dans ce tableau montrent deux différents paramètre Id avec le même ID de retenue, de sorte que ce serait une de la Revue Id je voudrais capturer.
Vous devez vous connecter pour publier un commentaire.
http://www.sqlfiddle.com/#!3/d858f/3
Si il est possible d'avoir des doublons exacts et c'est ok, vous pouvez modifier la clause HAVING pour COUNT(DISTINCT parameter_id).
http://www.sqlfiddle.com/#!3/6e113/3 a un exemple
Having count(DISTINCT ReviewID) > 1
alors vous sauriez si il y avait deux différentes reviewId (plutôt que seulement le même plusieurs fois.Si je comprends les critères de sélection: Pour chaque combinaison de
ReviewID
etdeduction_id
vous pouvez avoir un seul parameter_id et que vous voulez une requête qui produit un résultat sans la ReviewIDs qui enfreignent ces règles (plutôt que l'identification de ces lignes). Ce qui fera:À expliquer:
review_errors
est un expression de table commune (penser que c'est un nommé sous-requête qui n'a pas encombrer la requête principale). Il sélectionne le ReviewIDs qui cassent les critères. Lorsque vous avez quitté le rejoindre, il sélectionne toutes les lignes de la table de gauche, indépendamment de si elles correspondent à la table de droite et que les lignes de la table de droite qui correspondent à la table de gauche. Les lignes qui ne correspondent pas aura des valeurs null dans les colonnes de droite de la table. En spécifiantWHERE r.ReviewID IS NULL
vous permet d'éliminer les lignes de la main gauche de la table qui correspond à la droite de la table.SQL Violon