表A 显示了我在MySQL中运行以下SQL的结果。
SELECT * FROM table
WHERE MATCH (title) AGAINST ('marka tv')
表A
表B 显示了我想要获得的结果。如您所见,这些组按循环顺序排列。
表B
答案 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