例如 表zoon中的animal字段里有“tiger”,“monkey”,“elenphant”等等200多种,我需要查出每种动物的各5条记录
结果显示为:
animal age id
tiger  10  1
tiger  11  2
..
monkey 10 12
monkey 10 13
...
elephant 10 20
elephant 11 21
..
等等200多种都各显示5条请问要如何实现

解决方案 »

  1.   

    select animal,age,id,total from(
    select animal,age,id,row_number() over(partition by animal order by id) total from zoon
    ) rn <= 5没有验证,思路是这样
      

  2.   

    select * from
    (
    select animal,age,id ,row_number()over(partition by animal order by age desc) row_num
    from zoon
    )where row_num <=5;
    显示出了每种动物中年龄最大的前5种animal。
      

  3.   

    首先强烈建议你不要试图用1个sql干这件事。因为sql返回肯定是一个list
    后续还要遍历list把他们按照类型拆分sql的话呢 就是select * from zoon where animal='xxx1' union select * from zoon where animal='xxx2' union 
    这个xxx要先用distinct查出来,然后拼这个大sql。