码迷,mamicode.com
首页 > 其他好文 > 详细

如何查询每个用户的第二条记录

时间:2016-08-25 23:37:28      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

话不多说,先上数据:

技术分享

情景:平时用的最多最熟悉的就是查询第一条或者最后一条记录,这种问题很简单,不外乎升序降序排列,min()/max()函数,就可以做到了。

但是现在如果要查询第二条记录的话,sql语句该如何写呢?

今天搜到了一个解决办法,觉得sql写的不错,这里记录一下。

先声明:这不是我原创,是百度搜到的,只是略做整理,换了个我比较喜欢的数据模型。

下面是sql:

SELECT m.username,m.amount,m.time FROM test m LEFT JOIN (

        SELECT a.username,a.time,a.amount,count(b.time) AS num FROM test a
        LEFT JOIN test b
        ON a.username=b.username and b.time <= a.time
        GROUP BY a.time 

) n 
ON m.time = n.time
WHERE n.num=2

即可得到结果:

技术分享

同时,这个sql还是可以扩展的,改变num的值,就可以查询第N条记录

并且我觉得比较取巧的是,子查询中join语句的on条件中用了小于的条件,

这是我之前并未用过的写法,觉得有些意思,特此记录一下。

 

如何查询每个用户的第二条记录

标签:

原文地址:http://www.cnblogs.com/superfat/p/5808419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!