日期:2014-05-16  浏览次数:20820 次

如何分别获得N个小类下各前数条记录?
需分别获得一个大类下的N个小类各前5条记录,不知用什么方法比较好?

例如:
大类:新闻资讯
小类:国内新闻、国际新闻、公司动态

要求:
从这三个小类别里各取最新的5条记录,并可单独赋值予三个数组,以便在前台模板上可单个列表。

现在的做法是foreach分别取:
PHP code
foreach($news_type as $key => $val){
    $result = $this->db->query("SELECT * FROM article WHERE type_id='$val' ORDER BY id DESC LIMIT 5");
    $array_list[$key] = $result;
}


觉得这样效率较差,不知有没有更好的方法?


------解决方案--------------------
用一条语句去出来 效率和你循环取其实差不多




SELECT * FROM article A WHERE 5>=(select count(*) from article B where A.type_id=B.type_id and A.id<B.id)
order by id desc
------解决方案--------------------
参考下贴中的多种方法

http://blog.csdn.net/acmain_chm/article/details/4126306
[征集]分组取最大N条记录方法征集,及散分....
------解决方案--------------------
参考:
http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html?49369
中我的回答