假设我有一张如下表所示的表格;
GetData()
如果ID为33并且只从最大版本号中选择,我将如何从表中返回Value字段? (在这种情况下,2)
喜欢的东西;
version_number ID Value
1 33 Foo
2 33 Bar
1 37 Foo
编辑:以下两个答案都有效。我和Tim Schmelter的回答只是因为我觉得它更优雅一点,但我还是把它们都投了。谢谢你们:))
答案 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
即,首先获取过滤后的数据,然后只打印所需的列。