You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知外键列时,如何从数据库表中查询目标关联行?

查询父级名称为'foo'的子行解决方案

针对你提供的foo_bar表结构和需求,这里有两种常用的SQL查询方法,都能返回父级名称为'foo'的bar和sql对应的行:

方法一:自连接查询

这是处理同表父子关联最常用的方式,把表本身当作两个独立的表(父表和子表)进行关联:

SELECT child_tb.*
FROM foo_bar child_tb
JOIN foo_bar parent_tb ON child_tb.parent = parent_tb.id
WHERE parent_tb.name = 'foo';

逻辑说明:

  • 我们给foo_bar表起了两个别名:child_tb代表需要查询的子行,parent_tb代表对应的父行
  • 通过child_tb.parent = parent_tb.id关联子行和它的父行
  • 用WHERE parent_tb.name = 'foo'过滤出父级名称为'foo'的子行
  • 最终返回子行的所有字段,也就是你预期的bar和sql两行

方法二:子查询

如果逻辑更简单,也可以先用子查询找到父级名称为'foo'的id,再匹配子行的parent字段:

-- 当父级名称唯一时用=
SELECT *
FROM foo_bar
WHERE parent = (SELECT id FROM foo_bar WHERE name = 'foo');

-- 如果存在多个名称为'foo'的父行,改用IN
SELECT *
FROM foo_bar
WHERE parent IN (SELECT id FROM foo_bar WHERE name = 'foo');

逻辑说明:

  • 内层的子查询SELECT id FROM foo_bar WHERE name = 'foo'会先得到父级'foo'的id(也就是1)
  • 外层查询再筛选parent等于这个id的所有行,就能得到目标子行

两种方法都能满足你的需求,你可以根据实际场景选择:如果需要同时展示父级和子级的信息,自连接会更灵活;如果只是简单匹配父级id,子查询更直观。

内容的提问来源于stack exchange,提问作者Vincensius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:09:14