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

MySQL查询需求:将job_details中未在job_actions的Detail_ID纳入结果

解决MySQL中缺失Detail_ID的查询问题

嗨,这个问题本质上是要保留左表的所有记录,哪怕右表没有对应匹配项,用LEFT JOIN就能轻松搞定!

核心思路

你之前的查询应该是用了内连接(默认的JOIN),这种连接只会返回两张表中都存在匹配Detail_ID的记录,所以漏掉了那些在job_details里有但job_actions里没有的条目。而左连接(LEFT JOIN)会返回左表(这里是job_details)的所有行,右表(job_actions)没有匹配的话,对应的字段就会显示NULL。

基础解决方案

直接用LEFT JOIN关联两张表,同时过滤job_details的Job_ID:

SELECT 
    jd.Detail_ID,
    ja.Percent_Complete
FROM 
    job_details jd
LEFT JOIN 
    job_actions ja ON jd.Detail_ID = ja.Detail_ID
WHERE 
    jd.Job_ID = '41230';

这样就能得到job_details中Job_ID='41230'的所有5条Detail_ID,缺失的Percent_Complete会显示为NULL。

优化:替换NULL为自定义值

如果不想看到NULL,可以用COALESCE函数把它替换成你需要的默认值(比如0):

SELECT 
    jd.Detail_ID,
    COALESCE(ja.Percent_Complete, 0) AS Percent_Complete
FROM 
    job_details jd
LEFT JOIN 
    job_actions ja ON jd.Detail_ID = ja.Detail_ID
WHERE 
    jd.Job_ID = '41230';

为什么之前的查询不行?

当你直接查询job_actions时,相当于只从这张表取数据,自然拿不到不存在的Detail_ID。而左连接是以job_details为基准,确保所有符合条件的Detail_ID都被包含进来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:49:51