Może to pomóc komuś, kto szuka sposobu sortowania tabeli według dwóch kolumn, ale równolegle. Oznacza to połączenie dwóch rodzajów za pomocą funkcji sortowania agregującego. Jest to bardzo przydatne, na przykład podczas wyszukiwania artykułów przy użyciu wyszukiwania pełnotekstowego, a także w odniesieniu do daty publikacji artykułu.
To tylko przykład, ale jeśli wpadniesz na pomysł, możesz znaleźć wiele funkcji agregujących do użycia. Możesz nawet zważyć kolumny, aby preferować jedną zamiast drugiej. Moja funkcja przyjmuje skrajności z obu rodzajów, dlatego najbardziej cenione wiersze znajdują się na górze.
Przepraszam, jeśli istnieją prostsze rozwiązania do wykonania tej pracy, ale nie znalazłem żadnej.
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