SO,
Проблема
Мой вопрос о том, как объединить таблицу в 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 записей) - так что производительность не вещь, чтобы заботиться, я думаю.
Вопрос
Можно ли как-нибудь упростить мой запрос? Кроме того, важно не использовать переменные. Заказ может быть включен в результат (как в моей скрипке) - но это не обязательно.