比如news表 有 dept 、title、date 三个字段
需求:
      查询每个部门最新的3条记录(1条语句)每个部门取3条,有10个部门有可能是30条!oracle:我知道可以使用row_nember函数来做
mysql:怎么做呢?
hql:就更不知道怎么做了
希望高手帮帮忙~谢谢

解决方案 »

  1.   

    这个其实就是分页啊,oracle你可以用row_number over直接开窗分页,也可以rownum+group
    mysql可以用limit + group
    hql没研究过,不过hibernate里是可以写jdbc的
      

  2.   

    hibernate jdbc我知道但我想用纯hql怎么做啊?
      

  3.   

    hql 分页:
    Query query = session.createQuery(" from news");
    query.setFirstResult((offset - 1) * pagesize);//设置当前页的起始索引
    query.setMaxResults(pagesize);//设置每页的最大记录数
      

  4.   

    hql分页:
    Query query = session.createQuery("from news");
    query.setFirstResult((offset - 1) * pagesize);//设置当前页的起始索引                query.setMaxResults(pagesize);//设置当前页的最大记录数
      

  5.   

    msyql:select * from news where 4>(select count(*) from news group by dept order by date desc)
    再换成hql
      

  6.   


    如果id是自增的,就找id最大的三个呗
      

  7.   

    mysql中可以使用limit 函数。limit 0,3 表示取前3条
      

  8.   

    hql: from News n group by n.dept order by n.date desc ;
    Query query = session.createQuery("from News n group by n.dept order by n.date desc");
    query.setFirstResult(0);//设置当前页的起始索引
    query.setMaxResults(3);//设置每页的最大记录数
      

  9.   

    mysql:select top 3 * from news order by date desc
      

  10.   


    Mysql 貌似不能用 top 的吧, 只能用  select * from news order by date desc limit(0,3)
    ORACLE 可以用 select * from news where rownum <=3 order by date desc 
      

  11.   

    楼主,百度一下“HQL分页”就OK了