SQL: поиск двойных записей без потери идентификатора

У меня есть 1 таблица "Продукты", которая выглядит так:

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 слишком плохи. Я надеюсь, что это что-то простое.


person Community    schedule 21.04.2009    source источник


Ответы (3)


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

SELECT min(ID), Product, Color FROM table GROUP BY Product, Color;
person andri    schedule 21.04.2009

Как насчет

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

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

person Eoin Campbell    schedule 21.04.2009

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

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

SELECT MAX(ID) AS ID, Product, Color
FROM Products
GROUP BY Product, Color
ORDER BY ID
person eKek0    schedule 21.04.2009