我在表id_std
中有一列名为account
的列。
在account
表中,我具有名称为parent_account_id
的递归关系
我正在尝试获取parent_account_id
=选中的id
和id_std = 333
的所有记录,id_std是表的唯一值
示例:
id - id_std - parent_account_id - name
1 333 null Name 1
2 129 1 Name 2
3 249 1 Name 3
如何使用333
id_std
进行过滤,并在同一查询中包括所有带有parent_account_id = 1
的记录?
答案 0 :(得分:0)
您可以在帐户上使用自动加入
select a.id, a.id_std, a.parent_account_id, a.name, b.id, b.id_std, b.parent_account_id, b.name
from account a
inner join account b on a.id = b.parent_account_id
where a.id_std = 333
答案 1 :(得分:0)
我正在根据您的示例数据做出的假设是id_std
= 333的只有一行,所以:
select * from account where parent_id = (select id from account where id_std = 333)
如果有多行,其中id_std
= 333,则:
select * from account where parent_id in (select id from account where id_std = 333)
(当然,即使id_std
= 333是唯一的,上述方法也可以使用。)
答案 2 :(得分:0)
您还可以使用限制器进行层次结构查询,以便仅获取层次结构的第一级。
select a.* from mytable a
start with id_std = 333
connect by prior id = parent_account_id and prior thename = 'Name 1'