SO,Reverse присоединиться к MySQL
Проблема
Мой вопрос о - как соединить таблицу в MySQL с собой в обратном порядке? Предположим, что у меня есть:
id name 1 First 2 Second 5 Third 6 Fourth 7 Fifth 8 Sixth 9 Seventh 13 Eight 14 Nine 15 Tenth
-И теперь я хочу, чтобы создать запрос, который будет возвращать присоединившихся записи в обратном порядке:
left_id name right_id name 1 First 15 Tenth 2 Second 14 Nine 5 Third 13 Eight 6 Fourth 9 Seventh 7 Fifth 8 Sixth 8 Sixth 7 Fifth 9 Seventh 6 Fourth 13 Eight 5 Third 14 Nine 2 Second 15 Tenth 1 First
Мой подход
я сейчас этот запрос :
SELECT
l.id AS left_id,
l.name,
(SELECT COUNT(1) FROM sequences WHERE id<=left_id) AS left_order,
r.id AS right_id,
r.name,
(SELECT COUNT(1) FROM sequences WHERE id<=right_id) AS right_order
FROM
sequences AS l
LEFT JOIN
sequences AS r ON 1
HAVING
left_order+right_order=(1+(SELECT COUNT(1) FROM sequences));
-Всего этого fiddle для структуры образца & код.
Некоторые фон
Там нет случай использования для этого. Раньше я делал это в приложении. Теперь в основном любопытство, если есть способ сделать это в SQL - вот почему я ищу не просто «какое-либо решение» (например, мое), но как можно более простое решение. Исходная таблица всегда будет маленькой (< 10.000 записей) - так что производительность не вещь, чтобы заботиться, я думаю.
Вопрос
Может ли мой запрос быть упрощена так или иначе? Кроме того, важно не использовать переменные. Заказ может быть включен в результат (как в моей скрипке) - но это не обязательно.
Хотя мы думаем - не могли бы вы предоставить прецедент для этого?Любопытно – zerkms
@zerkms Я обновил –
Думаю, вы ограничены MySQL? В противном случае было бы легко использовать функции окна. –