sql – 在多个组中的每组记录中选择最新和特定的版本
发布时间:2020-12-12 08:48:59 所属栏目:MsSql教程 来源:网络整理
导读:问题: 我有一个在foo中记录数据行的表.每次更新行时,都会插入一个新行以及修订版本号.桌子看起来像: id rev field1 1 test12 1 fsdfs3 1 jfds1 2 test2 请注意,在表中最后一条记录是第一行的较新版本. 有没有人知道一种有效的方法来查询最新版本的行,以及一
问题:
我有一个在foo中记录数据行的表.每次更新行时,都会插入一个新行以及修订版本号.桌子看起来像: id rev field 1 1 test1 2 1 fsdfs 3 1 jfds 1 2 test2 请注意,在表中最后一条记录是第一行的较新版本. 有没有人知道一种有效的方法来查询最新版本的行,以及一个具体的记录版本?例如,对于rev = 2的查询将返回2,3和4行(而不是替换的第1行),而对于rev = 1的查询会产生具有rev = 1的那些行,并且在重复的ids的情况下,选择具有较高版本号的数据(记录:1,2,3). 我实际上不确定这是否可能在SQL Server … 我不喜欢以迭代的方式返回结果. 解决方法只获取最新版本:SELECT * from t t1 WHERE t1.rev = (SELECT max(rev) FROM t t2 WHERE t2.id = t1.id) 要得到一个具体的修订,在这种情况下1(如果一个项目没有修订,但下一个最小的版本): SELECT * from foo t1 WHERE t1.rev = (SELECT max(rev) FROM foo t2 WHERE t2.id = t1.id AND t2.rev <= 1) 这可能不是最有效的方式,但现在我无法想像出一个更好的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |