首页新闻找找看学习计划

请教下一个数据库的问题。

0
[已解决问题] 解决于 2014-05-19 13:33

PersonId       TestDate                          Valid

00000001    2014-04-30 17:33:24.500    0
00000001    2014-04-30 17:34:14.420    0
00000001    2014-04-30 17:35:11.360    0
00000006    2013-12-17 08:42:21.047    0
00000006    2013-12-18 09:56:51.160    0
00000020    2013-12-12 10:46:33.307    0
00000020    2013-12-18 10:39:31.000    0
00000132    2013-12-02 14:35:34.603    0

求解 怎么更新表 设置相同PersonId TestDate字段时间最大的Valid为1 其他的都为0 

青空下的思念的主页 青空下的思念 | 初学一级 | 园豆:4
提问于:2014-05-14 20:30
< >
分享
最佳答案
0

假设你的表名叫a,那么执行如下语句:

update a set Valid=1 from a
inner join
(select PersonId,MAX(TestDate) TestDate from a group by PersonId) b
on a.PersonId=b.PersonId and a.TestDate=b.TestDate
奖励园豆:5
丁学 | 专家六级 |园豆:18530 | 2014-05-15 08:42
其他回答(3)
0

update a set Valid=1 from a inner join (select distinct PersonId,MAX(TestDate) TestDate from a group by PersonId) b on a.PersonId=b.PersonId and a.TestDate=b.TestDate

sunlary | 园豆:934 (小虾三级) | 2014-05-15 14:03
0

update tbl set valid=1 from (select *,row_number() over(partition by PersonId order by TestDate desc) as rId from tbl) b where tbl.PersonId=b.PersonId and tbl.TestDate=b.TestDate and b.rId=1 

会飞的金鱼 | 园豆:881 (小虾三级) | 2014-05-18 20:58
0

楼主你说的设置相同PersonId  效果是不是应该这样啊?

恋人星空 | 园豆:260 (菜鸟二级) | 2014-06-27 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册