asc - ordenar por grupo especial de MySQL
order by mysql w3school (2)
La Tabla A muestra los resultados que tengo ejecutando el siguiente SQL en MySQL.
SELECT * FROM table
WHERE MATCH (title) AGAINST (''marka tv'')
Tabla A
La Tabla B muestra los resultados que deseo obtener. Como puede ver, los grupos están en orden de todos contra todos.
Tabla B
Considere una subconsulta en una tabla derivada para calcular un número de grupo que se ordenará en la mesa final:
SELECT f.*
FROM
(SELECT t1.* ,
(SELECT count(*)
FROM table t2
WHERE (t2.title <= t1.title)
AND (t1.groups = t2.groups)) AS groupNo
FROM table t1
WHERE MATCH (t1.title) AGAINST (''marka tv'')
) AS f
ORDER BY groupNo, groups
Si entiendo la pregunta, quiere ordenar la salida para que los grupos estén en forma de turnos en lugar de ordenados. Puede hacerlo enumerando los valores dentro de cada grupo y luego usar esa información para ordenar:
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;