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

PostgreSQL:统计多列合并后的唯一值总数

统计PostgreSQL两列所有值的唯一值总数的最优实现

要统计表中col1、col2两列所有值的唯一值总数(而非两列的组合唯一数),最优的做法是直接在数据库层面完成合并与去重统计,无需将数据导出到应用层再处理:

SELECT COUNT(DISTINCT val) AS unique_total
FROM (
    -- 将两列数据合并为单列
    SELECT col1 AS val FROM your_table
    UNION ALL
    SELECT col2 AS val FROM your_table
) AS combined_values;

为什么这个写法高效?

  • 用UNION ALL快速合并两列数据(不会提前去重,比UNION少一步操作),再通过外层的COUNT(DISTINCT)一次性统计所有唯一值,避免了额外的中间数据处理。
  • 全程在数据库内部执行,减少了数据传输开销,比先查询两列数据再在应用层去重计数的效率高得多。

示例验证

假设你的表数据如下:

col1col2
ab
bc
aa

执行上述查询后,会返回3(对应唯一值a、b、c),完全符合需求。

而如果用错误的组合唯一数查询:

SELECT COUNT(DISTINCT (col1, col2)) FROM your_table;

会返回3(对应三个不同的(col1,col2)组合),虽然数值巧合相同,但逻辑完全不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:05:58