mysql面试题走一波

                                                                                        2019mysql面试题案例分享

1、现有login_logs日志表,用来记录用户登录的信息情况,字段有:uid,create_time(时间格式为:yyyy-mm-dd i:m:s)

用sql语句查出,2017-06-01日登录次数超过3次的用户信息。

表如下:

思路:1、先查出在2017-06-01日登录的人有哪些

2、通过这些人进行分组过滤

SQL: 

select uid from (select uid,date(create_time) from login_logs WHERE date(create_time) = '2017-06-01') as t1 GROUP BY t1.uid HAVING COUNT(*) > 3;

结果如下:

2、条件同上,查出2017-06-01日登录次数最多的用户ID

思路:同样的查出2017-06-01日登录的用户是哪些,并且计数

然后,通过聚集函数MAX进行取最大值即可

SQL: select uid,MAX(mss) from (select uid,COUNT(*) as mss from login_logs WHERE date(create_time) = '2017-06-01') as t1 GROUP BY t1.uid;

结果如下:

3、假设现在有张user_info表,有字段uid,login_times,并且存在uid用户id,现需要将login_logs中每个用户登录的次数记录到user_info表中,请问SQL语句如何写?

思路:如果UID存在的情况下,直接更新login_times即可

SQL: update user_info set login_times = (select count(*) from login_logs where uid = user_info.uid);

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36431166/article/details/100536097