主题:[讨论]一个新手关于数据库的问题,很简单,请高手帮忙!
ao570
[专家分:0] 发布于 2008-01-15 11:24:00
我想从数据库的info表中读取数据,用了下面的语句
select 名字,部门,性别,编号,注册时间 from info where 部门=0,性别=0,
现在,我想在读取的时候加一些限制,过滤掉注册时间在5分钟之内的且同时名字和编号完全一样的数据(只读取重复数据中的一个数据)该怎么改啊???
请高手帮忙!!十分感谢!!
回复列表 (共9个回复)
沙发
liulei001 [专家分:12820] 发布于 2008-01-15 20:26:00
如果其它的数据有重复,以什么标准选择?比如 名字、编号相同,但性别或者注册时间不相同,选择哪一条?
系统是笨的,需要给明参数才能执行。只要标准明确了,用Group By处理就行了。
板凳
a97191 [专家分:4040] 发布于 2008-01-15 22:11:00
这个问题做不出,期待高手
3 楼
ao570 [专家分:0] 发布于 2008-01-16 08:51:00
我的意思就是要过滤姓名和编号完全相同,注册时间在5分钟之内的,至于性别其他的都不管,只看姓名和编号,如果5分钟很难,实在行就过滤同1天之内姓名和编号完全相同的业可以!请大家帮忙!谢谢!
4 楼
a97191 [专家分:4040] 发布于 2008-01-16 09:13:00
5分钟其实不难,难就难在它一天有N次出现
5 楼
ao570 [专家分:0] 发布于 2008-01-16 10:14:00
其实表里面的重复数据都是5分钟之内的,我就是想检索的时候把重复的过滤掉,只显示一次就可以了!我该怎么办啊??
6 楼
a97191 [专家分:4040] 发布于 2008-01-16 13:07:00
select 名字,max(注册时间) from info group by 名字
不就行了
7 楼
ao570 [专家分:0] 发布于 2008-01-16 15:37:00
具体的样子是这样的
名字|部门|性别|编号|注册时间
甲 |a |男 |01 |2008-1-14 12:01
乙 |a |男 |02 |2008-1-14 12:02
甲 |a |男 |01 |2008-1-14 12:03(重复的)
丙 |b |男 |03 |2208-1-14 12:05
甲 |a |男 |03 |2208-1-14 12:05
我现在要显示
名字|部门|性别|编号|注册时间
甲 |a |男 |01 |2008-1-14 12:01
乙 |a |男 |02 |2008-1-14 12:02
甲 |a |男 |03 |2208-1-14 12:05
我的查询语句要怎么写啊??
8 楼
a97191 [专家分:4040] 发布于 2008-01-17 15:53:00
declare @t table(名字 char(10),部门 char(10),性别 char(10),编号 char(10),注册时间 datetime)
insert @t select '甲','a','男','01','2008-1-14 12:01'
union all select '乙','a','男','02','2008-1-14 12:02'
union all select '甲','a','男','01','2008-1-14 12:03'
union all select '丙','b','男','03','2008-1-14 12:04'
union all select '甲','a','男','03','2208-1-14 12:05'
select a.名字,a.部门,a.性别,a.编号,a.注册时间 from @t a ,(select b.编号,max(注册时间) as 注册时间 from @t b group by b.编号) c
where a.注册时间=c.注册时间 and a.编号=c.编号
9 楼
linxuanxu [专家分:9360] 发布于 2008-01-20 17:47:00
我认为你把名字列和标号列都建立唯一索引就可以了.不知道我是否理解错了你的用意
我来回复