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

MySQL多表查询:如何LEFT JOIN关联的5张业务表?

获取所有Citation Sources(含无关联数据的记录)

没问题!要实现这个需求,核心是用左外连接(LEFT OUTER JOIN)——它会保留左表(这里就是citation_sources)的全部记录,哪怕关联的其他表没有匹配的数据。

先结合你的表结构逻辑,我假设各表的关联字段如下(如果实际字段名不同,你可以对应替换):

  • citation_sources 和 citation_login 通过citation_source_id关联
  • citation_login 和 owners 通过owner_id关联
  • owners 和 shops 通过owner_id关联
  • 商铺添加到引用源的关联,假设是citation_login和shops之间的直接关联(如果有单独的关联表,比如citation_shop_listings,也可以加入左连接)

示例查询语句

SELECT
  cs.*,
  cl.login_id, cl.username, -- 可选:citation_login的字段
  o.owner_id, o.name, -- 可选:owners的字段
  s.shop_id, s.shop_name -- 可选:shops的字段
FROM
  citation_sources cs
LEFT OUTER JOIN citation_login cl ON cs.citation_source_id = cl.citation_source_id
LEFT OUTER JOIN owners o ON cl.owner_id = o.owner_id
LEFT OUTER JOIN shops s ON o.owner_id = s.owner_id
ORDER BY cs.citation_source_id;

关键说明

  1. 左连接的作用:每一层都用LEFT OUTER JOIN(可以简写为LEFT JOIN),确保citation_sources的每一条记录都被保留,哪怕没有对应的citation_login、owners或shops数据——这些不存在的关联字段会显示为NULL。
  2. 字段选择:你可以根据需求调整SELECT后的字段,只保留你需要的信息。如果不需要某些关联表的字段,甚至可以去掉对应的左连接。
  3. 关联字段调整:如果你的表之间的关联字段不是我假设的(比如citation_sources的主键是id而不是citation_source_id),记得替换成实际的字段名。

如果你的商铺添加到引用源的逻辑是通过单独的关联表(比如citation_shop_listings),可以在查询中加入额外的左连接:

LEFT OUTER JOIN citation_shop_listings csl ON cl.login_id = csl.login_id
LEFT OUTER JOIN shops s ON csl.shop_id = s.shop_id

这样就能确保你获取到所有的引用源记录,无论它们是否有对应的客户、登录凭证或商铺关联数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:52:39