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条件中用了小于的条件,

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

  • 相关阅读:
    概率论
    计算机网络基础
    数据库 数据库管理系统 数据库系统
    第二次冲刺总结
    Beta版总结会议
    Beta阶段项目总结
    beta版本“足够好”/测试矩阵
    zencart批量更新后台邮箱地址sql
    php首页定向到内页代码
    用.htaccess 禁止IP访问
  • 原文地址:https://www.cnblogs.com/superfat/p/5808419.html
Copyright © 2011-2022 走看看