SQL:在不丢失ID的情况下查找双条目

时间:2009-04-21 13:04:25

标签: sql join distinct max

我有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,它可以是任何ID,允许我进行后续查询。

查询结果应为:

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

我试过了:

SELECT DISTINCT 
  Product, Color 
FROM 
  Products

但显然不会返回ID

我想我需要加入一些东西,但我对SQL的了解太差了。我希望这很简单。

3 个答案:

答案 0 :(得分:8)

这将是获得所需结果的一种方式:

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

答案 1 :(得分:3)

怎么样

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

这将返回唯一的产品/颜色组合以及找到的第一个(最低)ID。

答案 2 :(得分:0)

您需要使用GROUP BY子句。

同样但获得最大ID:

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