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

MySQL多表查询:如何从两个表中按需获取名称字段

解决方案

因为数据规则保证number仅存在于表a或表b中的一张,所以可以用两种方式实现需求:

方式一:左关联双表 + COALESCE函数

利用COALESCE()函数返回第一个非空值的特性,同时左关联表a和表b,直接取存在的那个name:

SELECT 
    c.number, 
    c.field, 
    COALESCE(a.name, b.name) AS name
FROM c
LEFT JOIN a ON c.number = a.number
LEFT JOIN b ON c.number = b.number

方式二:合并a、b表后再关联

先通过UNION ALL把表a和表b的number与name合并成一个数据集,再和表c关联,这种写法在a、b数据量较大时效率更优:

SELECT 
    c.number, 
    c.field, 
    combined.name
FROM c
LEFT JOIN (
    SELECT number, name FROM a
    UNION ALL
    SELECT number, name FROM b
) AS combined ON c.number = combined.number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:57:02