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

SQL查询存在不匹配值时,如何仍列出其他匹配结果?

问题描述

查询中因demand_category_id=0在demand_category表中无匹配值,导致整个查询无结果输出。需求:即使存在不匹配的关联条件,也要列出其他符合匹配条件的记录。

相关表结构

process表

fk_unit_id  fk_unit_position fk_demand_category
     1             2                  1

unit表

unit_id 
    1   

unit_position表

unit_position
    2       

demand_category表

demand_category
     1

当前使用的查询语句

SELECT unit_name,unit_position_name,demand_category_name From process 
INNER JOIN unit ON process.fk_unit_id = unit_id and unit_id =1
INNER JOIN unit_position ON process.fk_unit_position_id = unit_position_id and unit_position_id = 2
INNER JOIN demand_category ON process.fk_demand_category_id = demand_category_id  and  demand_category_id =0 ;
解决方案

核心问题是你用了INNER JOIN关联demand_category表,当该表无匹配值时,会直接过滤掉所有符合其他条件的记录。要实现需求,只需把demand_category表的关联方式改为LEFT JOIN,并调整筛选条件位置:

SELECT unit_name, unit_position_name, demand_category_name 
FROM process 
INNER JOIN unit ON process.fk_unit_id = unit.unit_id 
INNER JOIN unit_position ON process.fk_unit_position = unit_position.unit_position 
LEFT JOIN demand_category ON process.fk_demand_category = demand_category.demand_category 
WHERE unit.unit_id = 1 
  AND unit_position.unit_position = 2;

说明:

  • INNER JOIN用于确保process表与unit、unit_position表的匹配记录被保留,将这两个表的筛选条件移到WHERE子句中逻辑更清晰。
  • LEFT JOIN关联demand_category表:即使process中的fk_demand_category在目标表中无匹配(比如你指定的0),也会保留process的记录,对应的demand_category_name会显示为NULL。

如果确实需要筛选demand_category_id=0的记录,但仍要保留其他匹配的基础记录,可调整为:

SELECT unit_name, unit_position_name, demand_category_name 
FROM process 
INNER JOIN unit ON process.fk_unit_id = unit.unit_id 
INNER JOIN unit_position ON process.fk_unit_position = unit_position.unit_position 
LEFT JOIN demand_category ON process.fk_demand_category = demand_category.demand_category 
  AND demand_category.demand_category = 0 
WHERE unit.unit_id = 1 
  AND unit_position.unit_position = 2;

这种写法会尝试关联demand_category_id=0的记录,若不存在则demand_category_name为NULL,但依然保留符合unit和unit_position条件的process记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:16:10