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

如何一次性遍历数据表所有列并输出各列CountDistinct统计值

批量统计数据表全列去重计数(CountDistinct)实现方案

逐列手写统计语句效率太低,直接用对应数据库的动态SQL方案,替换表名即可一次性输出所有列的去重计数结果,输出格式为单行多列,可直接复制到文档使用。

核心逻辑

  • 从数据库内置的元数据表中读取目标表的所有字段名
  • 自动拼接每个字段对应的COUNT(DISTINCT 字段名)统计语句片段
  • 拼接为完整的查询SQL后执行,直接返回全字段统计结果

各数据库可直接复用代码

MySQL

-- 替换下方两个变量为实际的库名、表名
SET @target_schema = '你的数据库名';
SET @target_table = '你的目标表名';
SET @stat_sql = NULL;

SELECT GROUP_CONCAT(
    CONCAT('COUNT(DISTINCT `', COLUMN_NAME, '`) AS `', COLUMN_NAME, '_distinct_count`')
    SEPARATOR ', '
) INTO @stat_sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @target_schema
  AND TABLE_NAME = @target_table;

SET @stat_sql = CONCAT('SELECT ', @stat_sql, ' FROM `', @target_schema, '`.`', @target_table, '`');

PREPARE stmt FROM @stat_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

PostgreSQL

-- 替换下方两个变量为实际的schema名、表名,默认schema为public
DO $$
DECLARE
    target_schema text := 'public';
    target_table text := '你的目标表名';
    stat_sql text;
BEGIN
    SELECT 'SELECT ' || STRING_AGG(
        'COUNT(DISTINCT "' || column_name || '") AS "' || column_name || '_distinct_count"',
        ', '
    ) || ' FROM "' || target_schema || '"."' || target_table || '"'
    INTO stat_sql
    FROM information_schema.columns
    WHERE table_schema = target_schema
      AND table_name = target_table;

    EXECUTE 'CREATE TEMP TABLE tmp_distinct_stat AS ' || stat_sql;
END $$;

SELECT * FROM tmp_distinct_stat;

SQL Server

-- 替换下方两个变量为实际的schema名、表名,默认schema为dbo
DECLARE @target_schema NVARCHAR(100) = 'dbo'
DECLARE @target_table NVARCHAR(100) = '你的目标表名'
DECLARE @stat_sql NVARCHAR(MAX)

SELECT @stat_sql = STRING_AGG(
    'COUNT(DISTINCT [' + COLUMN_NAME + ']) AS [' + COLUMN_NAME + '_distinct_count]',
    ', '
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @target_schema
  AND TABLE_NAME = @target_table

SET @stat_sql = 'SELECT ' + @stat_sql + ' FROM [' + @target_schema + '].[' + @target_table + ']'
EXEC sp_executesql @stat_sql

注意:如果目标表数据量在千万级以上,全字段去重计数会占用较多计算资源,建议在业务低峰期执行,避免影响正常业务读写。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:33:33