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

MySQL LEFT JOIN查询问题:需返回所有socials行及site_id=1的关联数据

解决方法

你的问题出在WHERE子句的位置:当使用LEFT JOIN后在WHERE中过滤social_links.site_id=1,会直接排除social_links表中无匹配(或site_id不为1)的行,最终只返回2行。

正确的做法是将site_id=1的条件放到LEFT JOIN的ON子句中,这样既能保留socials表的所有行,又只关联符合site_id=1的social_links数据:

SELECT socials.*, social_links.*
FROM socials
LEFT JOIN social_links ON socials.id = social_links.social_id 
    AND social_links.site_id = 1

结果说明

执行这段SQL后会得到4行结果:

  • Facebook、Instagram会关联到site_id=1的链接数据
  • Linkedin、Messenger对应的social_links字段会显示为NULL,符合你保留所有socials行的需求

原代码问题解析

原代码中,LEFT JOIN先返回所有socials行,再通过WHERE过滤social_links.site_id=1,但无匹配site_id=1的行中social_links.site_id为NULL,NULL与1的比较不成立,因此被过滤,最终仅留下2行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:43:12