SQL server - 将搜索限制为列中的最大值

时间:2016-08-02 13:17:40

标签: sql-server

假设我有一张如下表所示的表格;

GetData()

如果ID为33并且只从最大版本号中选择,我将如何从表中返回Value字段? (在这种情况下,2)

喜欢的东西;

version_number    ID    Value
1                 33    Foo
2                 33    Bar
1                 37    Foo

编辑:以下两个答案都有效。我和Tim Schmelter的回答只是因为我觉得它更优雅一点,但我还是把它们都投了。谢谢你们:))

2 个答案:

答案 0 :(得分:3)

在sql-server中,您可以使用排名函数,如ROW_NUMBER,f.e。 CTE:

WITH CTE AS
(
   SELECT t.*, rn = Row_Number() Over (Partition By ID  Order By version_number Desc)
   FROM dbo.TableName t
)
Select Value From CTE
WHERE  ID = 33 
   AND rn = 1

答案 1 :(得分:1)

您可以使用子查询:

SELECT Value FROM
( SELECT TOP 1 *
  FROM Table
  WHERE ID = 33 
  ORDER BY version_number
  ) as t

即,首先获取过滤后的数据,然后只打印所需的列。