2009-04-21 4 views
1

Ich habe 1 Tabelle „Produkte“, die wie folgt aussehen:SQL: Suche nach doppelten Einträgen, ohne die ID zu verlieren

 
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 

In diesem Beispiel wird ein Produkt hat immer die gleiche Farbe, unabhängig von dem Geschäft, wo es ist verkauft. Ich möchte mit der Color-Eigenschaft eine Abfrage erstellen, die einen eindeutigen Satz von Produkten zurückgibt. Ich muss auch eine ID haben, es könnte eine beliebige ID sein, die es mir erlaubt, eine Folgeanfrage zu stellen.

Das Ergebnis der Abfrage sollte sein:

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

Ich habe versucht:

SELECT DISTINCT 
    Product, Color 
FROM 
    Products 

Aber das zurückkehrt natürlich nicht die ID als auch

Ich glaube, ich beitreten müssen etwas, aber meine SQL-Kenntnisse sind zu schlecht. Ich hoffe, das ist etwas Einfaches.

Antwort

8

Dies wäre ein Weg, um das Ergebnis des Erhaltens Sie wollen:

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

Wie über

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

Das wird zurückkehren einzigartige Produkt/Farbkombinationen und die erste (niedrigste) ID gefunden.

0

Sie müssen die GROUP BY Klausel verwenden.

die gleiche, aber die Gewinnung maximun ID:

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