常用的sql

mysql,A用户表,B留言表,查询留言数大于10条记录的用户名,留言数量

select u.name,count(*) as total from user as u inner join message as m on u.user_id=m.user_id group by u.name having total>10 order by total desc 

1.查询每个用户最新的发言记录:

select max(time) from 2017sxgf group by id order by time desc limit 10;

 

2.找到发言数最多的用户ID和次数

select userid,count(userid) from orders  where userid != '' group by userid order by count(userid) desc  limit 1;

3.关于MySQL中每个用户取1条记录的三种写法

第一种是先排序,然后group,这样的话自然可以取到最适合的一条数据。
缺点很明显:Using temporary; Using filesort

select * from (select * from 2017sxgf order by time desc)t group by mobile limit 10;

 

第二种是联合查询 

select * from (select max(time) as btime  from 2017sxgf group by mobile limit 10)t left join  2017sxgf as s on t.btime = s.time;

 

第三种是子查询

select * from 2017sxgf where exists(select mobile from (select max(time) as btime from 2017sxgf  group by mobile limit 10)t where t.btime = 2017sxgf.time);

 

5.

 

 

 

 

 

posted @ 2017-06-01 21:15  datang6777  阅读(195)  评论(0编辑  收藏  举报