2009-04-21 5 views
1

У меня есть 1 стол «Продукты», который выглядит следующим образом:SQL: поиск двойных записей без потери 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 

В этом примере продукт всегда имеет один и тот же цвет, независимый от магазина, где он продан. Я хочу сделать запрос, который возвращает отдельный набор продуктов с свойством Color. Мне также потребуется идентификатор, это может быть любой идентификатор, который позволяет мне выполнять следующий запрос.

Результат запроса должен быть:

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

Я пробовал:

SELECT DISTINCT 
    Product, Color 
FROM 
    Products 

Но это явно не возвращает идентификатор, а

Я думаю, мне нужно присоединиться что-то, но мои знания SQL слишком бедны. Надеюсь, это просто.

ответ

8

Это будет один из способов получения желаемого результата:

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

Как насчет

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

Это будет возвращать уникальные комбинации продукта/цвет и первый (самый низкий) ID найден.

0

Вам необходимо использовать пункт GROUP BY.

То же самое, но получение Maximun ID:

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