查询 return SQL 列的第一个结果?

Query to return first result of a column in SQL?

在 SQL 中,是否有一种简单的方法可以 return 列中包含某个值的顶级实例的所有行?

鉴于下面的 table...

Size    Color    Price
S       Red      1
S       Green    4
S       Blue     7
M       Olive    45
M       Black    99
M       Orange   153
L       Purple   4
L       Red      75
L       Blue     98

我想return...

Size    Color    Price
S       Red      1
M       Olive    45
L       Purple   4

您可以尝试 CTE 函数和 ROW_NUMBER(),以完成此操作:

这是按降序实现的,你在评论中说

;WITH CTE AS(
    SELECT myTable.*
    , RN = ROW_NUMBER()OVER(PARTITION BY Size ORDER BY Price DESC)
    FROM myTable 
)
SELECT Size, Color, Price FROM CTE
WHERE RN = 1

这实现了您想要的结果:

;WITH CTE AS(
    SELECT myTable.*
    , RN = ROW_NUMBER()OVER(PARTITION BY Size ORDER BY Price ASC)
    FROM myTable 
)
SELECT Size, Color, Price FROM CTE
WHERE RN = 1
ORDER BY
  CASE Size
    WHEN 'S' THEN 1
    WHEN 'M' THEN 2
    WHEN 'L' THEN 3
  END

这里有一个示例 SQL FIDDLE,您可以观看演示。

影响来自:Select the first instance of a record

您需要对数据进行分区以获得分配给每个分区大小的行数,然后以第一个分区为准,结果如下

     Select size, color, price from
         (Select Size, Color,Price, 
         row_number() 
        over (partition by size order by 
             Price) as rn
       from mytable) t where t.rn =1