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

Oracle数据库如何提取同表任意多列的唯一值单列结果集?

多列提取单列唯一值的解决方案

问题说明

现有表结构及数据:

Id, col_1, col_2, col_3
1    A      A      B
2    B      B      B
3    C      C      D

需要输出单列的唯一值:

res_column
 A
 B
 C
 D

已尝试的方法:

  • Union仅适用于2-3列,不符合需求;
  • 了解过pivot/unpivot,但未掌握其用法。

解决方案

方法一:使用UNPIVOT(适配SQL Server等支持该语法的数据库)

通过UNPIVOT把横向的多列转成纵向的单列数据,再用DISTINCT去重即可,代码如下:

SELECT DISTINCT res_column
FROM (
    SELECT col_1, col_2, col_3
    FROM 你的表名 -- 替换为实际表名
) AS src
UNPIVOT (
    res_column FOR cols IN (col_1, col_2, col_3) -- 列出所有需要提取值的列
) AS unpvt;

方法二:UNION ALL + 去重(通用所有数据库)

你之前对Union的理解有偏差,不管多少列都可以用这种方式,只需要给每一列加一个SELECT语句,用UNION ALL合并后去重,代码示例:

SELECT DISTINCT res_column
FROM (
    SELECT col_1 AS res_column FROM 你的表名
    UNION ALL
    SELECT col_2 AS res_column FROM 你的表名
    UNION ALL
    SELECT col_3 AS res_column FROM 你的表名
    -- 若有更多列,继续添加UNION ALL和对应的SELECT语句即可
) AS temp;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:45:37