SQL: поиск двойных записей без потери идентификатора - PullRequest
1 голос
/ 21 апреля 2009

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

Ответы [ 3 ]

8 голосов
/ 21 апреля 2009

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

SELECT min(ID), Product, Color FROM table GROUP BY Product, Color;
3 голосов
/ 21 апреля 2009

Как насчет

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

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

0 голосов
/ 21 апреля 2009

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

То же самое, но с получением максимального идентификатора:

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