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

如何对列名不同但数据类型相同的两张表执行UNION操作?

解决UNION查询结果不符合预期的问题

咱们先拆解下你当前查询语句里的问题,直接说点实在的:

两个核心问题导致结果错位/缺失

1. 列顺序完全匹配错了

UNION是按列的位置来合并结果集的,根本不看列名。你第二个SELECT里把address放在了第三列的位置,可你期望的第三列是location、第四列才是address——这直接导致本该在ADDRESS列的值跑到LOCATION列去了,完全搞反了位置。

2. UNION的自动去重坑了你

你想要保留id和name相同的两行(一行显示LOCATION,一行显示ADDRESS),但UNION默认会自动去重,把重复的行合并成一行。这时候必须用UNION ALL,它会保留所有行,不会做去重操作。

修正后的查询语句

SELECT id, name, location, NULL AS address FROM Table1
UNION ALL
SELECT id, name, NULL AS location, address FROM Table2
ORDER BY id, name; -- 可选排序,让结果和你期望的格式更一致

为啥这样就对了?

  • 第二个SELECT里把NULL AS location放在第三列,address放在第四列,和第一个SELECT的列顺序完全对齐,LOCATION和ADDRESS列的内容再也不会错位。
  • UNION ALL替换UNION,确保两个表中id、name相同的行都被保留,不会被合并,正好符合你想要的结果样式。

跑这个语句应该就能得到你期望的输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:01:57