zoukankan      html  css  js  c++  java
  • sql 分组后显示每组的前几条记录

    sql 分组后显示每组的前几条记录 

    如   表中记录是   
              code       serialno   
              A1               1   
              A1               2   
              A1               3   
              A1               5   
        
              B1               2   
              B1               3   
              B1               4   
        
          我需要的结果是   表中   A1和B1的第2条记录. 

     select     
              a.code,a.serialno   
      from   
              (select   code,serialno,rownum   rid   from   表)   a,   
              (select   code,serialno,rownum   rid   from   表)   b   
      where   
              a.code=b.code   and   a.rid>=b.rid   
      group   by   
              a.code,a.serialno   
      having   count(*)=2
    解析:对表中的记录利用rownum编号,然后利用两个子查询对同一条记录的编号相同的原理,统计code相同的记录存在几条编号小于等于当前编号的记录,如果 为2,则说明当前记录在表中对于相同的code是第二条记录,输出。逻辑很简单,但是看下解析之后还是很明白的。

  • 相关阅读:
    codevs1004 四子连棋
    codevs1009 产生数
    NOIP2014 寻找道路
    Tyvj1139 向远方奔跑(APIO 2009 抢掠计划)
    随机算法
    线性基
    线性基入门
    线性基 + 并查集
    欧拉公式 (平面)
    卡特兰数 + 大数
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3722818.html
Copyright © 2011-2022 走看看