仅保留由父案例 ID 链接的父行和相应的子行
keep only parent and corresponding child rows linked by parent case ID
我有 table 个案例,其中子案例通过 parent_case_id
字段链接到父案例,该字段包含父案例的 case_id
。 parent_case_id
为空的个案是父个案或没有子个案的个案。我想从此 table 中删除没有子案例的案例,只保留父案例及其对应的子案例。我可以通过自连接保留子案例,但无法弄清楚如何交叉检查案例是父案例。
parent_case_id case_id
null abc123
abc123 def456
abc123 ghi789
null jkl123
jkl123 mno456
null pqr789 -- Would want to remove this row for example
这涉及使用 CTE 或子查询将查询分成两部分。示例:
with cases_with_children as (
select
distinct parents.case_id
from cases parents
join cases children
on children.parent_case_id = parents.case_id
)
select cases.*
from cases
left join cases_with_children
on cases.case_id = cases_with_children.case_id
where parent_case_id is not null
or cases_with_children.case_id is not null
我有 table 个案例,其中子案例通过 parent_case_id
字段链接到父案例,该字段包含父案例的 case_id
。 parent_case_id
为空的个案是父个案或没有子个案的个案。我想从此 table 中删除没有子案例的案例,只保留父案例及其对应的子案例。我可以通过自连接保留子案例,但无法弄清楚如何交叉检查案例是父案例。
parent_case_id case_id
null abc123
abc123 def456
abc123 ghi789
null jkl123
jkl123 mno456
null pqr789 -- Would want to remove this row for example
这涉及使用 CTE 或子查询将查询分成两部分。示例:
with cases_with_children as (
select
distinct parents.case_id
from cases parents
join cases children
on children.parent_case_id = parents.case_id
)
select cases.*
from cases
left join cases_with_children
on cases.case_id = cases_with_children.case_id
where parent_case_id is not null
or cases_with_children.case_id is not null