2009-04-21 20 views
1

J'ai 1 table « Produits » qui ressemble à ceci:SQL: trouver des entrées doubles sans perdre l'ID

 
ID  Product  Shop Color 
01  Car   A  Black 
02  Car   B  Black 
03  Bike  C  Red 
04  Plane  A  Silver 
05  Car   C  Black 
06  Bike  A  Red 

Dans cet exemple, un produit a toujours la même couleur, indépendamment de la boutique où il est vendu. Je souhaite créer une requête renvoyant un ensemble de produits distinct avec la propriété Color. Je devrai également avoir un identifiant, cela pourrait être n'importe quel identifiant, qui me permettra de faire une requête de suivi.

Le résultat de la requête doit être:

 
ID  Product  Color 
01  Car   Black 
03  Bike  Red 
04  Plane  Silver 

J'ai essayé:

SELECT DISTINCT 
    Product, Color 
FROM 
    Products 

Mais cela ne retourne pas évidemment l'ID et

Je suppose que je dois rejoindre quelque chose, mais ma connaissance de SQL est trop pauvre. J'espère que c'est quelque chose de simple.

Répondre

8

Ce serait une façon d'obtenir le résultat souhaité:

SELECT min(ID), Product, Color FROM table GROUP BY Product, Color; 
3

Comment A propos

SELECT 
    Product, Color, Min(ID) 
FROM 
    TABLE 
GROUP BY 
    Product, Colour 

qui va revenir produit unique/Combinaisons de couleurs et le premier ID (le plus bas) trouvé.

0

Vous devez utiliser la clause GROUP BY.

le même, mais l'obtention de l'ID maximun:

SELECT MAX(ID) AS ID, Product, Color 
FROM Products 
GROUP BY Product, Color 
ORDER BY ID