zoukankan      html  css  js  c++  java
  • 如何查询每个用户的第二条记录

    话不多说,先上数据:

    情景:平时用的最多最熟悉的就是查询第一条或者最后一条记录,这种问题很简单,不外乎升序降序排列,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条件中用了小于的条件,

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

  • 相关阅读:
    宋宝华: 文件读写(BIO)波澜壮阔的一生【转】
    内核工具 – Sparse 简介【转】
    【java】JSON.toJSONString 空对象也可以转化为JSON字符串
    Seata分布式事务简单使用
    Mixin 工作原理
    公链
    公链
    公链
    公链
    公链
  • 原文地址:https://www.cnblogs.com/superfat/p/5808419.html
Copyright © 2011-2022 走看看