首页 新闻 搜索 专区 学院

请教一个数据库的问题。

0
悬赏园豆:15 [已解决问题] 解决于 2014-05-14 20:22

怎么修改同一天内最新的那条数据的valid字段为true,根据personId字段来取count(personId)>2的数据,就是不知道怎么判断是同一天的,求帮助

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

描述的太模糊,你在表里添加一个日期字段,字段默认值用getdate() 不就可以了吗?

收获园豆:15
Hyman.Ro | 菜鸟二级 |园豆:275 | 2014-05-11 20:35

不是 我的意思是日期字段已经有了 可能一天里有personId相同的几条数据 比如 2012-3-12 号 有personId为123456的 总共6的数据 我想取这一天里的最新的那条数据  而现在不止一天 想区数据库中所有一天内最新的数据。

青空下的思念 | 园豆:4 (初学一级) | 2014-05-11 20:43

@青空下的思念: 因为你没有贴出表以及字段,我就按照自己的方式写给你,如下:

select * from tab_test where id in (
select max(id) from tab_test group by convert(char,date,10))

Hyman.Ro | 园豆:275 (菜鸟二级) | 2014-05-11 21:35

@青空下的思念: 

id:表字段的ID。

date:就是你的日期字段。我的日期格式:“2014-05-11 20:58:30.590”,你根据自己的日期格式调整convert(char,date,10))。也就是根据年月日分组后取出最大的ID。(最大的ID也代表一天当中最新的记录,你根据你的实际需求 调整该字段)

Hyman.Ro | 园豆:275 (菜鸟二级) | 2014-05-11 21:39

@Hyman.Ro: 谢谢哈 现在还有个问题就是如果我一天中有几个不同的PersonId(第二列),那怎么求所有PersonId在该天中的最新的数据呢 ,其实就相当于录好多人的数据,有可能一个人的录了几次,取每个人当天最后一次录的数据。抱歉啊 可能表达能力比较欠缺。说的不太明白

1    111    2014-02-22 10:00:00.000    NULL
2    111    2014-02-22 09:22:00.000    NULL
3    111    2014-02-22 07:22:00.000    NULL
4    222    2014-02-22 08:22:00.000    NULL
5    222    2014-02-22 03:22:00.000    NULL
6    333    2014-02-22 05:22:00.000    NULL
7    444    2014-02-23 05:22:00.000    NULL
8    444    2014-02-23 07:22:00.000    NULL
9    444    2014-02-23 02:22:00.000    NULL
10    555    2014-02-23 02:22:00.000    NULL
11    555    2014-02-23 03:22:00.000    NULL

如上列数据 最后取到的应该是

1    111    2014-02-22 10:00:00.000    NULL
4    222    2014-02-22 08:22:00.000    NULL
6    333    2014-02-22 05:22:00.000    NULL
8    444    2014-02-23 07:22:00.000    NULL
11    555    2014-02-23 03:22:00.000    NULL

青空下的思念 | 园豆:4 (初学一级) | 2014-05-12 00:30

@青空下的思念: 上面都给你解答了么。把ID 换成personId 就可以了,如下:

select * from tab_test where id in (
select max(personId) from tab_test group by convert(char,date,10))

Hyman.Ro | 园豆:275 (菜鸟二级) | 2014-05-12 09:42
其他回答(3)
0

如果你能够发现自己将问题描述清楚的能力不够的话。建议一个方法,把数据表的结构写出来,再把数据模拟10条,

然后将需要的数据结果写在下方,这样可能大家更容易理解你要的是什么。

爱编程的大叔 | 园豆:30698 (高人七级) | 2014-05-11 21:04

嗯嗯 下次注意了 自己表达的不太清楚 谢谢提醒

支持(0) 反对(0) 青空下的思念 | 园豆:4 (初学一级) | 2014-05-12 00:31
0

DATEDIFF() 函数返回两个日期之间的天数。

语法

DATEDIFF(datepart,startdate,enddate)

DATEDIFF(day,“2014-05-11 20:58:30.590”,“2014-05-11 20:58:30.590”)=0

wolfy | 园豆:2636 (老鸟四级) | 2014-05-11 22:35

不好意思哈 自己表达的不太清楚 让你理解错了

支持(0) 反对(0) 青空下的思念 | 园豆:4 (初学一级) | 2014-05-12 00:32
0

Snail的梦 | 园豆:278 (菜鸟二级) | 2014-05-12 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册