mysql数据库 表名logs; 
表结构: 
id,logdate,des,type 不同类型用type区分 现在我想取每个类型(type)的前30跳记录(order by logdate),sql怎么写? 谢谢! 

解决方案 »

  1.   

    思路:如ID是唯一标识的字段的话,可以按id,logdate,des,type 分组,
    计算出同一type的logdate的排名,用HAVING COUNT(*)<=30
      

  2.   

    id是唯一标识的,
    能不能给出具体的sql
      

  3.   

    计算出同一type的logdate的排名,用HAVING COUNT(*) <=30这句不太明白
      

  4.   

    应该是,select top 30 from logs  order by logdate 
    如果有type类型的名字的话,可以在表明后面加where 条件
      

  5.   

    参考一下。
    一个意思。
    http://blog.chinaunix.net/u/29134/showart_465578.html
      

  6.   

    select 
      id,
      logdate,
      des,
      type
    from logs t
    where (select count(1) from logs where type=t.type and logdate>=t.logdate)=30