有两表 a和b
a表结构(cid, category)
b表结构(aid, cid, name, time, des)现在要检索出一个表如下
-------------------------------------
category | name | name | name | name 
category | name | name | name | name 
category | name | name | name | name 
category | name | name | name | name 
category | name | name | name | name ...
.... //这还有很多结果集里的category为不重复,name是根据a.cid检索的b表的数据, 注意 b.name 只要四条记录 这样如何写sql ??

解决方案 »

  1.   

    按照你的现在的数据库设计
    搜索出
    category | name 
    category | name 
    category | name 
    category | name 
    category | name 
    每个category对应四条记录,可能会更高效些.
      

  2.   


    //我是先检索a表,缓存了,根据它的cid来读取b表的四条记录,     select name from b where cid in (1,2,3) limit 4     //如果这样只能拿到四条记录,怎么根据这些cid每行都拿四条记录呢?//好像hao123的首页, 前面一个分类,后面带七个或八个的分类网址,如果是这样数据库应该怎么设计?
      

  3.   


    //好像hao123的首页, 前面一个分类,后面带七个或八个的分类网址,如果是这样数据库应该怎么设计?//假如,数据量比较大的情况. . .
      

  4.   

    select distinct(a.category),b.name from a,b where a.cid=b.aid group by a.category这样处理后,然后每四组一循环
      

  5.   


    嗯,我曾经想过种,但这样做,当数据集很大的时候, 你后面不加LIMIT ,那此不是 。 。 。 何况这样是遍历数据库了 。 。。 我只想在数据读出时, 抽四条数据, 不全读出来 
      

  6.   

    加了limit也是在相应的数据集上择取,比如10条数据取5条,mysql也是扫描了10条再取5条,并不是直接取5条然后停止扫描.