我有一个名为“referral”的表,它包含两个名为“refer_by”和“refer_to”的列。“refer_by”列存储用户的ID,谁推荐某人,“refer_to”存储用户的ID,谁被“refer_by”用户推荐。
以下是存储的信息。
| 一个标题|又一个头球|
| --------------|--------------|
| 1|二|
| 1|五|
| 二|六|
| 五|七|
| 七|八|
| 八|九|
| 九|10个|
| 十五岁|十六岁|
| 十八岁|二十|
我想获取refer_by=1的所有引用列表。例如refer_by=1 refer 2和5,2 refer 6,5 refer 7等等。
我正在使用以下查询,但它失败了,原因是“ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR:对查询“referral”的递归引用不能出现在其非递归项“”中。
@Query(value = "WITH RECURSIVE referral AS " +
"( " +
"SELECT ref1.* FROM referral ref1 WHERE ref1.refer_by =:referByUserId " +
"UNION ALL " +
"SELECT ref2.* FROM referral ref2 " +
"INNER JOIN " +
"referral ref3 ON ref2.refer_by = ref3.refer_to " +
") " +
"SELECT reff.refer_by, reff.refer_to FROM referral reff", nativeQuery = true)
List<Object[]> testt(final Long referByUserId);
请帮帮我谢谢
1条答案
按热度按时间cetgtptt1#
问题是递归CTE与表(
referral
)同名,数据库无法解决这种二义性。我建议对CTE使用不同的别名,如: