有俩个表 一个文章分类表 cate  一个文章表 article   cate结构 id, name     article 结构  id, cate,title,content我想查询出 每种分类的前俩条文章  用一条sql语句 如何写  mysql 5.0 以上 支持子查询 
哪位高手 帮忙谢谢

解决方案 »

  1.   

    try:select d.* from(
    select c.* from(
    select max(id)as art_id,cate as cate_id from  article where id not in(SELECT a.id from(
    select max(b.id) id,b.cate from article b group by b.cate)a)
    group by cate)cunion
    select max(id) id,cate from article  group by cate)d ;
    一条语句,效率很低的!!!
      

  2.   

    给你一个例子,如果还不会的话,那就......SELECT C1 , SUBSTRING_INDEX( group_concat(C2 intTitlePK SEPARATOR 'sep' ),  'set', 2  ) as C2  FROM  `T1`  WHERE 1  GROUP  BY C1 
      

  3.   

    是 
    SELECT C1 , SUBSTRING_INDEX( group_concat(C2 intTitlePK SEPARATOR 'sep' ),  'sep', 2  ) as C2  FROM  `T1`  WHERE 1  GROUP  BY C1 ;
    'set'--> 'sep'
      

  4.   

    to:klan
    偶明白你的算法,先把每类最大的ID选出来,在把每类的不在最大ID里的最大ID(也就是每类第二大的ID)选出来,然后进行联合,就能得到每类的前两个ID
    那如果需要把每类前3条,前4条......前n条选出来的话,那这SQL语句岂不是非常非常的长啊!
    是否还有更好的解决办法呢?
      

  5.   

    唉,这么久了,还没有解决吗? 试试下面的语句(注意,我的逗号可能是全角字符)
    其中,分隔符要取特殊一些,保证你的title没有那种字母组合就号了。Select cate,SUBSTRING_INDEX( group_concat(title SEPARATOR 'sep' ),  'sep', 2  ) as title from article where 1 group by cate;
    当然了,这里是分类编码,不是分类名,楼主自己加上分类名好吗?
    只不过文章是以 sep 分隔了。