文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>从各个分类中各取出前N个记录

从各个分类中各取出前N个记录

时间:2011-01-26  来源:陈国立

我见到过有人用循环读取每一个分类别的方法,然后再用每一个分类编号去查询对应的前10条记录,最后合并成一个DataTable对象,最后把数据源绑定到前台。这样做法也能达到显示效果,但是效率怎么样呢?我敢肯定地说,如果数据量不多,或许勉强应付得过去,如果数据量多的话,不行。

那么有什么办法可以解决这个问题呢?

先看一个例子

如一班级成绩表

现建立课程表 tableA

sid         sname
1             语文
2             数学
3             英语

建学生成绩库 tableB

id         sid           fen           name
1          1             100           张三
2          1              89            李四
3          1              95            王五
4          2             89             张三
5          3             78             王五
6          2             99             王五

可以显示出所有科目前10名单

select a.sid,sname,id,fen,name from tableA a inner join
   (select * from tableB b
       where id in(select top 10 id from tableB where sid=b.sid
       order by fen desc)) as b
       on a.sid=b.sid
       order by a.sid,fen desc

SELECT sid, sname, fen,name FROM (SELECT px =(SELECT COUNT(1) + 1  FROM tableB  WHERE sid = b.sid AND fen > b.fen), a.sid, a.sname, b.fen,b.name FROM tableA a JOIN tableB b ON a.sid = b.sid) t WHERE (px <= 10) ORDER BY sid, fen DESC

 

同样的引申到那个新闻表的问题也可以依此类推。我觉得这个解法比循环查询要好多了,不知道有没有更好的解决办法?

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载