按MySQL特殊组排序

时间:2015-08-09 12:37:19

标签: mysql sql sorting mysqli round-robin

表A 显示了我在MySQL中运行以下SQL的结果。

SELECT * FROM table 
WHERE MATCH (title) AGAINST ('marka tv')

表A

enter image description here

表B 显示了我想要获得的结果。如您所见,这些组按循环顺序排列。

表B

enter image description here

2 个答案:

答案 0 :(得分:3)

如果我理解了这个问题,您需要对输出进行排序,以便组以循环方式而不是排序。您可以通过枚举每个组中的值,然后使用该信息进行排序来完成此操作:

SELECT t.*
FROM (SELECT t.*,
             (@rn := if(@g = groups, @rn + 1,
                        if(@g := groups, 1, 1)
                       )
             ) as rn
      FROM table t CROSS JOIN
           (SELECT @rn := 0, @g := '') params
      WHERE MATCH (title) AGAINST ('marka tv')
      ORDER BY groups
     ) t
ORDER BY rn, groups;

答案 1 :(得分:1)

考虑派生表中的子查询来计算要在最终表中排序的组号:

cd