我有这个表,我想用来存储记录的链条。
CREATE TABLE table_name (
id INT,
unique_id varchar,
reference_id varchar,
);
我想实施MariaDB的SQL查询它通过ID打印所有记录与参考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
如果有可能,我想编辑此查询到JPA?
这是不可能的,因为JPQL这将是一个递归查询。
但是你可以使用SQL和执行该本机查询。
entityManager.createNativeQuery("<your sql>");
了解更多有关递归查询的MariaDB的手动https://mariadb.com/kb/en/library/recursive-common-table-expressions-overview/