经常看到问题,如何取出每组的前N条记录。方便大家参考于是便把常见的几种解法列出于下。问题:有表 如下,要求取出各班前两名(允许并列第二)Table1 ---- ------ ----......
* from Table1 a where 2>(select count(*) from Table1 where ClsNo=a.ClsNo and Score>a.Score) order by a.ClsNo,a.Score desc
方法三: select * from Table1 a where id in (select id from Table1 where ClsNo=a.ClsNo order by Score desc limit 2) order by a.ClsNo,a.Score desc
方法....
这里列出了多种SQL语句的实现方法,有些是MySQL特有的(Limit, 其它数据库可根据实际更改,比如oracle的rownum,MS SQL SERVER 的 top,..),有时是SQL标准支持的。但效率上和应用的场合或许不同。具体应用时可根据实际表中的记录情况,索引情况进行选择。
2/2 首页 上一页 1 2 |