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

MySQL如何查询食物表中搭配食物名称?含NULL值处理

查询食物及其搭配名称(保留NULL值)

现有FOOD表结构及数据如下:

ID | NAME       | GOES_WELL_WITH   
1  | APPLE      | 3   
2  | BANANA     | NULL    
3  | ORANGE     | 2    
4  | BLUEBERRY  | 5    
5  | GRAPE      | 4    
6  | LEMON      | 1

需求:查询每个食物的名称,以及与之搭配的食物名称;当GOES_WELL_WITH为NULL时,对应搭配名称也为NULL(比如香蕉的情况)。

想要保留NULL值,必须使用左自连接(LEFT JOIN),内连接(INNER JOIN)会自动过滤掉GOES_WELL_WITH为NULL的行,这就是之前无法保留NULL的原因。

正确SQL语句

SELECT 
    f1.NAME AS food_name,
    f2.NAME AS paired_food_name
FROM FOOD f1
LEFT JOIN FOOD f2 
    ON f1.GOES_WELL_WITH = f2.ID;

执行结果

执行后会得到如下结果,完美保留了香蕉的NULL搭配:

food_name  | paired_food_name
APPLE      | ORANGE
BANANA     | NULL
ORANGE     | BANANA
BLUEBERRY  | GRAPE
GRAPE      | BLUEBERRY
LEMON      | APPLE

核心逻辑:左连接以左表(f1,所有食物)为基础,即使右表(f2,搭配的食物)没有匹配的行(即f1.GOES_WELL_WITH为NULL时),也会保留左表的该行,并且右表对应的字段显示为NULL,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:12:02