Esto quizás ayude a alguien que está buscando la forma de ordenar la tabla por dos columnas, pero de manera paralela. Esto significa combinar dos tipos usando la función de clasificación agregada. Es muy útil cuando, por ejemplo, recupera artículos utilizando la búsqueda de texto completo y también en relación con la fecha de publicación del artículo.
Este es solo un ejemplo, pero si capta la idea, puede encontrar muchas funciones agregadas para usar. Incluso puede pesar las columnas para preferir una a la segunda. La función mía toma extremos de ambos tipos, por lo tanto, las filas más valoradas están en la parte superior.
Lo siento si existen soluciones más simples para hacer este trabajo, pero no he encontrado ninguna.
SELECT
`id`,
`text`,
`date`
FROM
(
SELECT
k.`id`,
k.`text`,
k.`date`,
k.`match_order_id`,
@row := @row + 1 as `date_order_id`
FROM
(
SELECT
t.`id`,
t.`text`,
t.`date`,
@row := @row + 1 as `match_order_id`
FROM
(
SELECT
`art_id` AS `id`,
`text` AS `text`,
`date` AS `date`,
MATCH (`text`) AGAINST (:string) AS `match`
FROM int_art_fulltext
WHERE MATCH (`text`) AGAINST (:string IN BOOLEAN MODE)
LIMIT 0,101
) t,
(
SELECT @row := 0
) r
ORDER BY `match` DESC
) k,
(
SELECT @row := 0
) l
ORDER BY k.`date` DESC
) s
ORDER BY (1/`match_order_id`+1/`date_order_id`) DESC