取重复的时候两个值之间的时间间隔不能超过600秒。求指导。
假设这个表:
ID | Time |
1 | 2013-06-24 14:08:42.000 |
1 | 2013-06-25 15:09:45.000 |
1 | 2013-06-24 14:10:43.000 |
2 | 2013-07-09 10:56:25.000 |
2 | 2013-07-09 10:58:25.000 |
1 | 2013-06-26 14:10:43.000 |
1 | 2013-06-26 14:12:43.000 |
4 | 2013-07-31 09:07:26.000 |
5 | 2013-07-31 09:07:26.000 |
我要取出来的就是第一条和第三条两个id为1的数据以及两个id为2还有第六条和第七条id为1的。
大概就是这样。sql比较薄弱一点,不知道怎么比较Time的大小。按照网上搜的select ID]from table group by ID
having count(ID)>1只能搜到所有id重复了的,没有考虑时间。
可不可以取第一条时间然后和id相同的行比较时间 那不要比较很多次的。不知道怎么写额。
--复制基础数据 ID Time 1 2013-06-24 14:08:42.000 1 2013-06-24 15:09:45.000 1 2013-06-24 14:08:43.000 2 2013-07-09 10:56:25.000 2 2013-07-09 10:58:25.000 3 2013-07-31 09:06:48.000 4 2013-07-31 09:07:26.000 --创建临时表,模拟表结构 CREATE TABLE #t_test(id INT ,t DATETIME) --插入数据(省略) --对比数据与模拟数据是否正确 SELECT * FROM #t_test --出结果 SELECT * FROM #t_test t1 JOIN #t_test t2 ON t1.id=t2.id AND DATEDIFF(second,t2.t,t1.t) BETWEEN -600 AND 600 AND t1.t<>t2.t
这样行么?既然是#t_test t1 JOIN #t_test t2为什么要建临时表啊,可以在原表上直接查询啊。有很多条数据的,可能不同日期的相同id 的重复。就要把时间差在600之内的全部取出来。
@camille繁花: 大哥,我是测试....你替换为你的表就可以了~
@幻天芒: 额。我知道。我试了,全部可以显示出来一一对应。但是一条记录都有两个数据就是两个表的数据都在一条了 我是用视图写的,查询全部的时候结果是对的,但是视图不允许,查询t1的数据就不对了 怎么绑定到repeater?
@camille繁花: 把*号,换成具体的字段即可...。或者你在前台直接绑定你需要的字段~