sql 查询问题求教

2016-03-23 12:53:15 +08:00
 xuyl

有个数据表 userlog 如下:

需要查询组装成如下表格:

2138 次点击
所在节点    MySQL
5 条回复
halfcrazy
2016-03-23 13:10:32 +08:00
select user, count(*) as cnt, logintime from userlog order by cnt desc, logintime asc group by user
idblife
2016-03-23 13:17:16 +08:00
select user, count(*) ,min(logintime),max(logintime) from userlog
jhdxr
2016-03-23 13:21:23 +08:00
直接 select *,登录次数自己写代码统计即可(一个 string-int 的 map , key 是用户, value 是次数)
klesh
2016-03-23 13:31:27 +08:00
目测一楼的 sql 不行
select user group by user 是可以,其它的字段必须是 aggregate function. select logintime 是不行的。另外 order 需要在 group 后面

1.分两次查询
SELECT user, count(*) AS cnt FROM userlog GROUP BY user ORDER BY cnt;
SELECT logintime FROM userlog WHERE user=? ORDER BY logintime;

2.利用 GROUP_CONCAT ( mysql 用得少,未实测,不保证书写正确)
SELECT user, count(*) AS cnt, GROUP_CONCAT(logintime SEPARATOR '\n' ORDER BY logintime) AS logintimes FROM userlog GROUP BY user ORDER BY cnt;
xuyl
2016-03-23 14:14:41 +08:00
@klesh 感谢,第二种类方法可用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX