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

MySQL中如何从两个关联表选取字段并按指定格式返回结果?

解决方案:用UNION ALL实现所需结果格式

当然可以实现!你要的这种将两个表的行分别展示、对应字段为空的效果,用UNION ALL就能轻松搞定,具体思路和SQL语句如下:

核心思路

我们需要分别查询两张表,把另一张表的物料字段用NULL填充,然后用UNION ALL把两个结果集拼接起来——因为UNION ALL会保留所有原始行,不会自动去重,正好匹配你的需求。

具体SQL语句

SELECT 
    Ref, 
    MaterialX, 
    NULL AS MaterialY
FROM table_1
-- 如果只需要特定Ref的数据,加上WHERE条件,比如WHERE Ref = 1
UNION ALL
SELECT 
    Ref, 
    NULL AS MaterialX, 
    MaterialY
FROM table_2
-- 同样,按需添加WHERE条件过滤Ref

语句解释

  • 第一个查询块针对table_1,取出Ref和MaterialX,同时将MaterialY设为NULL;
  • 第二个查询块针对table_2,取出Ref和MaterialY,同时将MaterialX设为NULL;
  • UNION ALL将这两个结果集纵向拼接,最终就得到了你期望的格式:table_1的所有行在前,table_2的所有行在后,对应物料字段非空,另一字段为NULL。

如果不需要限定某个Ref,直接去掉WHERE子句即可,这样所有Ref的对应数据都会按此格式展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:17:33