如何从已知外键列的表中选择

时间:2019-06-08 20:32:37

标签: mysql sql

表foo_bar

id | name | parent(foreign key)
------------------
1  | foo  | null
2  | bar  | 1
3  | sql  | 1

如果外键列已知,如何选择行? 例如,我要选择父名称为“ foo”的所有行,并且应输出bar和sql行

2 个答案:

答案 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
               )