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

SQL查询求助:子地点地址为空时复用父关联地址

解决子地点继承父地址的查询问题

我来帮你搞定这个查询需求!先看你原SQL里的两个小问题:

  • 表名不匹配:你建的表是location2,但查询语句里写的是location
  • 子查询没关联当前行的父ID,逻辑上会出问题

下面给你两种靠谱的解决方案,按需选择:

方案1:修正子查询写法

把表名改对,同时给主表起别名,让子查询能正确引用当前记录的id_parent_location,还能同时返回名称和地址:

SELECT 
  `name`,
  CASE 
    WHEN `address` IS NULL THEN (SELECT `address` FROM `location2` WHERE `id` = l.`id_parent_location`) 
    ELSE `address` 
  END AS `address`
FROM `location2` l
WHERE `id` = 2;

方案2:用LEFT JOIN更高效易读

用LEFT JOIN关联父地点表,再配合COALESCE函数直接取第一个非空的地址值,这种方式比子查询性能更好,逻辑也更清晰:

SELECT 
  l.`name`,
  COALESCE(l.`address`, parent.`address`) AS `address`
FROM `location2` l
LEFT JOIN `location2` parent ON l.`id_parent_location` = parent.`id`
WHERE l.`id` = 2;
  • LEFT JOIN保证就算没有父地点(比如ID=1的记录),也能正常返回主表数据
  • COALESCE会依次检查参数,返回第一个非NULL的值,刚好适配“子地址为空则用父地址”的需求

测试一下,查询id=2时会返回:

nameaddress
NAME BADDRESS A

查询id=1时也能正常返回自身的地址,完全符合你的预期哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:49:13