У меня есть эта таблица, в которой я хотел бы хранить цепочку записей.
CREATE TABLE table_name (
id INT,
unique_id varchar,
reference_id varchar,
);
Я хочу реализовать SQL-запрос для MariDB, который печатает все записи по id со всеми записями с reference_id.Примерно так:
| id | unique_id | reference_id | | |
|----|-----------|--------------|---|---|
| 43 | 55544 | | | |
| 45 | 45454 | 43 | | |
| 66 | 55655 | 45 | | |
| 78 | 88877 | 66 | | |
| 99 | 454 | 33 | | |
Я бы хотел, чтобы при выборе записи 66 были получены все транзакции вверх и вниз, потому что друг друга используют id, который указывает на них.Как я могу реализовать это с помощью рекурсивного CTE?Есть ли лучший способ?
Ожидаемый результат для записи с unique_id 66:
| id | unique_id | reference_id | | |
|----|-----------|--------------|---|---|
| 43 | 55544 | | | |
| 45 | 45454 | 43 | | |
| 66 | 55655 | 45 | | |
| 78 | 88877 | 66 | | |
Я пробовал это, но строки выше не печатаются.
select @ref:=id as id, unique_id, reference_id
from mytable
join (select @ref:=id from mytable WHERE id = 66)tmp
where reference_id=@ref
Демонстрация по БД Fiddle
Если это возможно, я хотел бы отредактировать этот запрос в JPA?