Questo forse aiuta qualcuno che sta cercando il modo di ordinare la tabella per due colonne, ma in modo parallelo. Ciò significa combinare due tipi utilizzando la funzione di ordinamento aggregato. È molto utile, ad esempio, per recuperare articoli utilizzando la ricerca full-text e anche per quanto riguarda la data di pubblicazione dell'articolo.
Questo è solo un esempio, ma se catturi l'idea puoi trovare molte funzioni aggregate da usare. Puoi persino ponderare le colonne per preferirne una rispetto al secondo. La mia funzione prende estremi da entrambi i tipi, quindi le file più apprezzate sono in cima.
Scusate se esistono soluzioni più semplici per fare questo lavoro, ma non ne ho trovate.
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