2010-12-08 38 views
0

je le schéma de base de données suivante:SQL de sélectionner des lignes qui ont (partiellement) les données dupliquées

Product ID | Component | ... 

ID de produit - une clé étrangère

Component - parties du produit

Pour certains Arcane raison qu'un certain nombre d'enregistrements ont le même ID produit & Composant. Existe-t-il une requête SQL qui renvoie tous les composants & de l'ID de produit, qui ont plusieurs composants identiques?

E.g. étant donné le tableau suivant

| Product ID | Component | 
-------------------------- 
| 1   | c1000  | 
| 1   | c1100  | 
| 2   | c2000  | 
| 2   | c2000  | 
| 2   | c2200  | 
| 3   | c3000  | 

La requête SQL doit retourner:

| Product ID | Component | 
-------------------------- 
| 2   | c2000  | 
+0

Le SGBD utilisé est Oracle 8 –

Répondre

2
SELECT 
    ProductId, 
    Component 
FROM 
    Table 
GROUP BY 
    ProductId, 
    Component 
HAVING 
    COUNT(*) > 1 
+2

Merci ... Je peux voir où je me trompais, j'avais seulement le ProductId dans la clause Group by! –

+0

@TK: Vous êtes les bienvenus! –

2
SELECT ProductId, Component, count(*) Duplicates 
from MyTable -- or whatever 
group by ProductId, Component 
having count(*) > 1 

Cela vous montrera aussi le nombre d'entrées en double il y a.

+0

la première ligne doit être «SELECT ProductID, Component, count (*) comme doublon? –

1
select "Product ID", Component 
from table 
group by "Product ID", Component 
having count(*) > 1