首页 新闻 会员 周边

用mysql写一个如下单表查询

0
悬赏园豆:5 [已解决问题] 解决于 2016-10-20 13:53

一张登录日志表 有3个字段  kid(自增) username,loginTime

要求写一句sql: 查询出每个用户最后三次登录的记录。

请懂得朋友 指点一下,谢谢!

隔壁老王来了的主页 隔壁老王来了 | 初学一级 | 园豆:99
提问于:2016-06-08 19:08
< >
分享
最佳答案
0

用下面的语句可以实现你要的功能,先排序再自关联

select b.username,b.loginTime FROM 
(
SELECT a.username,a.loginTime
FROM UserDB.dbo.LogInfo a
where a.kid IN
(
select TOP 3 kid from UserDB.dbo.LogInfo
where a.username = username ORDER BY a.loginTime DESC
)
) b 
group BY b.username,b.loginTime
ORDER BY b.username

 

收获园豆:5
不负春光,努力生长 | 小虾三级 |园豆:1382 | 2016-06-10 12:55

你好,我试了试,测试结果是:每组只能显示1条记录。

隔壁老王来了 | 园豆:99 (初学一级) | 2016-06-13 09:09
其他回答(2)
0

试试这,没有验证的

1 SELECT a.kid,a.username,a.loginTime FROM login_log a
2 WHERE 3>=(
3 SELECT COUNT(*) FROM login_log b
4 WHERE a.kid=b.kid)
5 ORDER BY a.username DESC

 

CodeHsu | 园豆:5468 (大侠五级) | 2016-06-08 22:22
0
1 SELECT DISTINCT kid, username, loginTime FROM login t1
2 WHERE kid in (
3     SELECT t2.kid FROM login t2 
4     WHERE t2.username = t1.username
5     ORDER BY t2.loginTime DESC
6     LIMIT 3)
7 ORDER BY username;
Yip21st | 园豆:222 (菜鸟二级) | 2016-06-09 00:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册