select data, class, idxfrom (select a.*, (@seqnum := if(@class = class, @seqnum + 1, if(@class := class, 1, 1) ) ) as idx from atable a cross join(select @class := NULL, @seqnum := 0) vars order by class, data ) aorder by idx, class;
编辑:
该查询独立地枚举每个类,因此数据最少的行的值为1,依此类推。为此,它正在使用MySQL变量。在其他数据库中,您将使用
row_number()。进行枚举后,最后一步就是按该字段排序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)