表foo_bar
id | name | parent(foreign key)
------------------
1 | foo | null
2 | bar | 1
3 | sql | 1
如果外键列已知,如何选择行? 例如,我要选择父名称为“ foo”的所有行,并且应输出bar和sql行
答案 0 :(得分:1)
您需要自我加入:
select f1.*
from foo_bar f1 inner join foo_bar f2
on f1.parent = f2.id
where f2.name = 'foo'
或者您可以先获取父代的ID并在WHERE子句中使用它:
select * from foo_bar
where parent = (select id from foo_bar where name = 'foo')
答案 1 :(得分:0)
以下exists
可能是@forpas的好答案的更有效的替代方法:
select *
from foo_bar f1
where exists (select 1
from foo_bar f2
where f2.name = 'foo'
and f2.id = f1.parent
)