select * from(
	select *,IF(@tmp_code=p_code,@tmp_num:=@tmp_num+1,
		@tmp_num:=0) 'tmp_num',@tmp_code:=p_code 'tmp_code' 
  	from product order by p_code
   ) a 
where a.tmp_num<6

sql解释:@tmp_code:=p_code表示把p_code的值临时赋值给@tmp_code,IF(@tmp_code=p_code,@tmp_num:=@tmp_num+1,@tmp_num:=0)表示如果p_code的值等于@tmp_code的话,@tmp_num自增1,这样我们就可以通过’tmp_num’这个字段来获取到每一组的前几条数据

原文链接:[793]mysql表分组后取每组前几条数据

Q.E.D.