关于类似重复数据查询的问题

yjhack 2004-11-23 10:52:49
一张表里记录的是所有用户登陆IP记录,只要登陆一次,就填加一行记录
我怎么样才可以查询出 每个用户最近登陆的记录?

我需要一个记录集,这里面是每个用户最近登陆的IP记录所组成的。

例如我表里的数据:
select top 20 * from memlogin order by ddate desc
2004-11-23 10:41:22.797 1645 192.168.45.240
2004-11-23 10:39:48.560 1663 192.168.45.194*****
2004-11-23 10:37:24.530 595 192.168.43.112
2004-11-23 10:37:23.640 1862 61.142.112.58
2004-11-23 10:37:15.297 316 192.168.45.240
2004-11-23 10:34:07.187 44 192.168.45.135
2004-11-23 10:33:53.843 1713 192.168.45.167
2004-11-23 10:32:56.420 1896 192.168.45.43
2004-11-23 10:32:20.437 786 192.168.45.48
2004-11-23 10:31:58.653 1895 192.168.45.43----
2004-11-23 10:31:08.827 767 192.168.43.112
2004-11-23 10:28:57.357 271 192.168.42.194
2004-11-23 10:28:17.967 728 192.168.45.95
2004-11-23 10:27:58.653 1895 192.168.45.22-----
2004-11-23 10:27:25.170 1422 192.168.45.40
2004-11-23 10:26:37.373 786 192.168.45.48
2004-11-23 10:25:54.747 492 192.168.45.183
2004-11-23 10:25:14.420 1643 192.168.45.193
2004-11-23 10:24:28.297 1526 192.168.42.240
2004-11-23 10:24:20.687 803 192.168.42.250
2004-11-23 10:15:48.560 1663 192.168.45.222******

1895,1663 这两个ID 在这个数据里显示登陆了两次,where 唯一ID 可以查询出具体用户的最近登陆记录。
但是我现在需要查询出每个用户最近登陆记录。

请问高手们?怎么查询?最好能给出具体的SQL 语句
...全文
128 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_yzy 2004-11-23
  • 打赏
  • 举报
回复
写错了,改一下
select b.*
from (select max([登陆时间]),[用户]
from memlogin
group by [用户]) a
inner join memlogin b on a.[登陆时间]=b.[登陆时间] and a.[用户]=b.[用户]

zhang_yzy 2004-11-23
  • 打赏
  • 举报
回复
select b.*
from (select max([登陆时间]),[IP]
from memlogin
group by [ip]) a
inner join memlogin b on a.[登陆时间]=b.[登陆时间] and a.[ip]=b.[ip]
yjhack 2004-11-23
  • 打赏
  • 举报
回复
谢谢,我再试试。
lsxaa 2004-11-23
  • 打赏
  • 举报
回复
做这种查询不可能快的

time>=a.time

在这一句中的意思是找出比a (a是别名,这个应该知道吧) 表当前时间大的记录

count(*) 是用来统计个数 20 说明前20个
yjhack 2004-11-23
  • 打赏
  • 举报
回复
time>=a.time 这个比较说明能说明一下吗?
我现在的记录是2万多行
执行你刚才的语句,5分钟都没有出来:(
lsxaa 2004-11-23
  • 打赏
  • 举报
回复
上面是每个用户最近20次的...
lsxaa 2004-11-23
  • 打赏
  • 举报
回复
select *
from memlogin a
where (select count(*) from memlogin where id=a.id and time>=a.time)=20
yjhack 2004-11-23
  • 打赏
  • 举报
回复
感谢 lsxaa(小李铅笔刀) ,你的方法是对,谢谢!

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧