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

MYSQL如何从3张不同的关联表中查询获取5个指定字段值

问题原因

你使用UNION的场景不符合需求:UNION的作用是垂直拼接多个查询的结果行,要求所有子查询的列数量、数据类型顺序完全一致,拼接后会直接沿用第一个查询的列名,自然不会为AR相关字段生成独立列。你需要的是通过多表关联水平拼接不同表的字段。

你原有代码的额外问题

你写的UNION语句中第二个查询的WHERE条件引用了别名a,但第二个查询的表别名是b,仅从语法层面这段代码也无法正常运行。

正确实现代码

直接以中间关联表为驱动做三表关联即可,代码如下:

SELECT 
  sc.SC_Name,
  sc.SC_Description,
  ar.AR_Name,
  ar.AR_Description,
  ar.id AS AR_id
FROM Key_SCAR ks
LEFT JOIN Service_Category sc ON ks.SC_id = sc.id
LEFT JOIN Area_Responsibility ar ON ks.AR_id = ar.id
WHERE ks.KS_id = 1;

逻辑说明

  • 以存储关联关系的Key_SCAR作为驱动表,筛选条件KS_id = 1直接加在驱动表上,查询效率更高
  • 通过LEFT JOIN分别关联两张基础数据表,按需取对应字段即可
  • 如果要求仅返回两张基础表都匹配到的有效记录,把LEFT JOIN替换为INNER JOIN即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:39:03