Sql 如何在层次结构表中查找任何内容?

Sql 如何在层次结构表中查找任何内容?,sql,oracle,hierarchical-data,Sql,Oracle,Hierarchical Data,我在查询级别结构表时遇到问题: select * from user_info where user = 1; user level value 1 1 Jackson 1 2 Pollock 1 3 1989-02-03 1 4 male 1 5 single 如果我想获得与用户1在级别1、2、3和4中的值完全相同的所有用户,该怎么办?最简单的方法可能是listag(): 更传统的方法是自联接: select u.use

我在查询级别结构表时遇到问题:

select *
from user_info
where user = 1;

user level value
1    1     Jackson
1    2     Pollock
1    3     1989-02-03
1    4     male
1    5     single

如果我想获得与用户1在级别1、2、3和4中的值完全相同的所有用户,该怎么办?

最简单的方法可能是
listag()

更传统的方法是自联接:

select u.user
from user_info u join
     user_info u1
     on u1.level = u.level and
        u1.value = u.value and
        u1.user = 1
where u1.level between 1 and 4
group by u.user
having count(*) = 4;   -- four levels match
select u.user
from user_info u join
     user_info u1
     on u1.level = u.level and
        u1.value = u.value and
        u1.user = 1
where u1.level between 1 and 4
group by u.user
having count(*) = 4;   -- four levels match