我有一个包含四列ID,名称,性别,CategoryID和100条记录的表格。enter image description here
在categoryID列中,我有categoryID' s范围从1到5,现在我想在每四行后显示类别1。 例如,如果我的第一行有CategoryId 1,那么在4行后第5行应该有categoryId 1然后再有4行具有不同的类别,之后的行应该有CategoryId 1
您可以参考上面附带的图片。
我希望结果是这样的enter image description here
感谢您的帮助!!!
答案 0 :(得分:1)
我使用增量变量为categoryID = 1和其他类别分配行号。然后我按照这个等级和类别ID对它们进行排序。见下面的查询。
select ID,Name,Gender,CategoryID
from (
select ID,Name,Gender,CategoryID,@rnk:=@rnk+5 as rnk
from table1, (select @rnk:=-4) r
where categoryID=1
union all
select ID,Name,Gender,CategoryID,
case when mod(@rnk2,5)=0 then @rnk2:=@rnk2+2
else @rnk2:=@rnk2+1 end as rnk
from table1, (select @rnk2:=0) r
where categoryID<>1
)t
order by rnk, categoryID
在此处查看演示:http://sqlfiddle.com/#!9/7a0d8/1