如何统计两张表中name列的distinct值总数?
统计两张表name列去重后的总数
可以通过合并两张表的name列后去重计数来实现,以下是几种常见数据库的实现方式:
MySQL / PostgreSQL 实现
SELECT COUNT(DISTINCT name) FROM ( SELECT name FROM TableA UNION SELECT name FROM TableB ) AS combined;
解释:UNION 会自动合并两个查询结果并去重,外层的 COUNT(DISTINCT) 统计最终的唯一值数量,匹配示例场景时会返回4。
SQL Server 实现
写法和上述一致,同样支持通过 UNION 去重后计数:
SELECT COUNT(DISTINCT name) FROM ( SELECT name FROM TableA UNION SELECT name FROM TableB ) AS combined;
注意事项
- 避免使用
UNION ALL,它不会做去重处理,会导致重复值被计入总数 - 若表数据量较大,建议给name列添加索引,提升查询效率
内容的提问来源于stack exchange,提问作者user20001817
相关产品推荐
相关产品推荐

