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 ; 一条语句,效率很低的!!!
给你一个例子,如果还不会的话,那就......SELECT C1 , SUBSTRING_INDEX( group_concat(C2 intTitlePK SEPARATOR 'sep' ), 'set', 2 ) as C2 FROM `T1` WHERE 1 GROUP BY C1
是 SELECT C1 , SUBSTRING_INDEX( group_concat(C2 intTitlePK SEPARATOR 'sep' ), 'sep', 2 ) as C2 FROM `T1` WHERE 1 GROUP BY C1 ; 'set'--> 'sep'
唉,这么久了,还没有解决吗? 试试下面的语句(注意,我的逗号可能是全角字符) 其中,分隔符要取特殊一些,保证你的title没有那种字母组合就号了。Select cate,SUBSTRING_INDEX( group_concat(title SEPARATOR 'sep' ), 'sep', 2 ) as title from article where 1 group by cate; 当然了,这里是分类编码,不是分类名,楼主自己加上分类名好吗? 只不过文章是以 sep 分隔了。
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 ;
一条语句,效率很低的!!!
SELECT C1 , SUBSTRING_INDEX( group_concat(C2 intTitlePK SEPARATOR 'sep' ), 'sep', 2 ) as C2 FROM `T1` WHERE 1 GROUP BY C1 ;
'set'--> 'sep'
偶明白你的算法,先把每类最大的ID选出来,在把每类的不在最大ID里的最大ID(也就是每类第二大的ID)选出来,然后进行联合,就能得到每类的前两个ID
那如果需要把每类前3条,前4条......前n条选出来的话,那这SQL语句岂不是非常非常的长啊!
是否还有更好的解决办法呢?
其中,分隔符要取特殊一些,保证你的title没有那种字母组合就号了。Select cate,SUBSTRING_INDEX( group_concat(title SEPARATOR 'sep' ), 'sep', 2 ) as title from article where 1 group by cate;
当然了,这里是分类编码,不是分类名,楼主自己加上分类名好吗?
只不过文章是以 sep 分隔了。