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

SQL如何将两列数据纵向合并为单个列?

嘿,这个需求其实就是把两列的所有值合并成单列,也就是咱们常说的列转行操作~下面分几种主流数据库给你对应的SQL写法,直接套用就行:

解决方案

MySQL / MariaDB

最直观的方式是用 UNION ALL 把两个查询结果拼在一起,每个查询分别取出对应列并别名成 combined:

SELECT city AS combined
FROM your_table_name
UNION ALL
SELECT city2 AS combined
FROM your_table_name;

小贴士:如果需要去掉重复值,把 UNION ALL 换成 UNION 就行,但UNION会额外做排序去重,性能比UNION ALL稍差,按需选择。

PostgreSQL

写法和MySQL基本一致,同样可以用UNION ALL:

SELECT city AS combined
FROM your_table_name
UNION ALL
SELECT city2 AS combined
FROM your_table_name;

如果你的PostgreSQL版本在10及以上,也可以试试更简洁的数组拆分行写法:

SELECT UNNEST(ARRAY[city, city2]) AS combined
FROM your_table_name;

这个方法是把每行的city和city2打包成数组,再拆成单独的行,效果和上面完全一样。

SQL Server

除了UNION ALL的写法,还可以用CROSS APPLY配合值构造器来实现,写法更灵活:

方法1:UNION ALL

SELECT city AS combined
FROM your_table_name
UNION ALL
SELECT city2 AS combined
FROM your_table_name;

方法2:CROSS APPLY

SELECT c.combined
FROM your_table_name
CROSS APPLY (VALUES (city), (city2)) AS c(combined);

重要提示

  • 记得把代码里的 your_table_name 替换成你实际的表名哦
  • 要确保city和city2列的数据类型一致,如果不一致,可能需要用CAST/CONVERT做类型转换,比如:CAST(city2 AS VARCHAR(50)) AS combined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:17:51