我与以下子表有父/子关系:
CHILD_ID PARENT_ID CHILD_VALUE
------------------------------
1 1 x
2 1 y
3 2 y
现在我想选择CHILD_VALUE所在的所有现有的不同父母:
换句话说,如果没有孩子“匹配”该值,则显示具有“匹配”子项的所有父项或NULL。
所以结果应该是这样的:
PARENT_ID CHILD_ID CHILD_VALUE
------------------------------
1 1 x
2 NULL NULL
问题是如何在这种情况下缩小连接范围。
答案 0 :(得分:2)
这就是诀窍:
select distinct a.parent_id, b.child_id, b.child_value
from test1 a
left outer join test1 b
on a.parent_id = b.parent_id
and b.child_value = 'x'
另见SQL fiddle。