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

如何在JOIN关联失败时仍返回dl_dml_projects的记录?

解决方案:使用LEFT JOIN替换INNER JOIN

这问题很常见,只需要把你的内连接改成左连接就能满足需求,具体修改后的SQL语句如下:

SELECT dl_dml_projects.*, dl_dml_catalogue.*, dl_dml_groups.* 
FROM dl_dml_projects 
LEFT JOIN dl_dml_catalogue ON dl_dml_projects.dml_prj_catalogue_id = dl_dml_catalogue.dl_dml_catalogue_id 
LEFT JOIN dl_dml_groups ON dl_dml_catalogue.dml_catl_group = dl_dml_groups.dl_dml_groups_id;

为什么这样改?

  • 你原来用的JOIN其实是INNER JOIN(内连接),它的逻辑是只返回所有关联条件都匹配的行。当dl_dml_projects.dml_prj_catalogue_id为空时,无法和dl_dml_catalogue表的主键匹配,所以这些行就被过滤掉了。
  • **LEFT JOIN(左连接)**则是以FROM后的第一个表(这里是dl_dml_projects)作为主表,强制保留主表的所有行:
    • 如果dl_dml_catalogue中有匹配的记录,就正常关联返回对应字段;
    • 如果没有匹配(比如dml_prj_catalogue_id为空),dl_dml_catalogue的所有字段会用NULL填充。
  • 第二个关联也要改成LEFT JOIN:如果不修改,当dl_dml_catalogue的匹配记录不存在时,内连接会再次过滤掉这些行,导致你还是看不到dml_prj_catalogue_id为空的项目行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:01:57