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

MySQL左连接查询问题:需保留无匹配数据项目,避免记录丢失

问题分析与解决方案

你的问题出在**WHERE子句的过滤逻辑**上:当使用左连接时,Meetings表中没有匹配Meeting_next的行(比如m_id=2),meeting_next的所有字段都会是NULL。而你的WHERE meeting_next.status=1会直接过滤掉这些NULL的行,导致m_id=2的项目丢失。

要实现每个项目仅保留status=1的Meetingdate(无匹配则为空),有两种常用的正确写法:

方案一:将过滤条件移至JOIN的ON子句中

把status=1的条件放到左连接的关联条件里,这样只会关联符合条件的Meeting_next行,不会过滤掉Meetings中没有匹配的行:

SELECT 
    m.m_id, 
    m.ProjectName, 
    mn.Meetingdate AS meetingDate
FROM meetings m
LEFT JOIN meeting_next mn 
    ON m.m_id = mn.fk_m_id 
    AND mn.status = 1
ORDER BY m.m_id DESC;

方案二:在WHERE子句中兼容NULL情况

如果一定要用WHERE子句,需要同时允许status=1或者mn.fk_m_id IS NULL(也就是没有匹配的行):

SELECT 
    m.m_id, 
    m.ProjectName, 
    mn.Meetingdate AS meetingDate
FROM meetings m
LEFT JOIN meeting_next mn 
    ON m.m_id = mn.fk_m_id 
WHERE mn.status = 1 OR mn.fk_m_id IS NULL
ORDER BY m.m_id DESC;

这两种写法都能得到你预期的结果:既保留所有项目,又只显示每个项目中status=1的会议日期(没有则为空)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:01