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
相关产品推荐
相关产品推荐

