如题,有很多年的数据,按日期顺序排列,假如要查询的字段为A,如何把每年中最小的10条记录找出来?

解决方案 »

  1.   


    Select * From T1 A join (
    Select year(transtime) as Year1,
    SUBSTRING_INDEX(cast(group_concat(Transtime) as char),',',10) as str
     from (
    Select * from t1 order by transtime)T group by year(TransTime))H
    on year(A.transtime)=H.year1 and
    INSTR(H.str,A.Transtime)<>0
      

  2.   

    参考下贴中的多种方法http://blog.csdn.net/acmain_chm/article/details/4126306
    [征集]分组取最大N条记录方法征集,及散分....
      

  3.   

    SELECT T.* 
    FROM
    (
      SELECT t1.*,
      (
        SELECT COUNT(*)+1 FROM tbl 
        WHERE dt<t1.dt AND YEAR(dt)=YEAR(t1.dt)
      ) AS g_id
      FROM tbl t1
    ) T
    WHERE T.g_id<=10
    ORDER BY dt