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

Oracle 19c中如何将两列数据合并为一列并按ID去重?

Oracle 19c 实现按ID去重并合并两列数据

问题场景

现有数据表(假设表名为test_table),示例数据如下:

idfirst_numberssecond_numbers
10123111
10122123
10111124
11333111
11444222
11222124

需要实现:将first_numbers和second_numbers两列的值合并到同一列,同时按id去除重复值,最终得到如下结果:

idconcatenated_columns
10123
10111
10122
10124
11333
11111
11222
11124

解决方案

可以通过UNION ALL将两列数据行转列,再结合DISTINCT或GROUP BY实现按id去重,具体SQL语句如下:

方法1:使用DISTINCT

SELECT DISTINCT id, concatenated_columns
FROM (
    SELECT id, first_numbers AS concatenated_columns
    FROM test_table
    UNION ALL
    SELECT id, second_numbers AS concatenated_columns
    FROM test_table
) t
ORDER BY id, concatenated_columns;

方法2:使用GROUP BY

SELECT id, concatenated_columns
FROM (
    SELECT id, first_numbers AS concatenated_columns
    FROM test_table
    UNION ALL
    SELECT id, second_numbers AS concatenated_columns
    FROM test_table
) t
GROUP BY id, concatenated_columns
ORDER BY id, concatenated_columns;

语句说明

  1. 内层子查询:通过UNION ALL将first_numbers和second_numbers两列的数据分别作为单独的行输出,保留所有原始数据(包括重复项)。
  2. 外层查询:使用DISTINCT或GROUP BY对每个id对应的数值进行去重,确保同一id下的数值唯一。
  3. ORDER BY:可选,用于按id和合并后的列排序,使结果更规整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:24:18