DISTINCT 操作符

最近更新时间:2026-05-06 16:28:13

我的收藏
DISTINCT 用于在 SELECT 查询中过滤重复数据,仅保留唯一的行或值组合。

核心用法

单列去重

检索某一列中所有不重复的值。
NULL 值处理:如果列中包含 NULLDISTINCT 会将其作为一个独立的值返回。
-- 返回客户所属的所有不重复国家
SELECT DISTINCT c_birth_country FROM customer;

多列组合去重

检索多列字段的唯一组合。只有当所有指定列的值都完全相同时,才会被视为重复行。
-- 返回称谓与姓氏的唯一组合
SELECT DISTINCT c_salutation, c_last_name FROM customer;

与聚合函数结合 (COUNT DISTINCT)

常用于统计不重复项的数量。
统计单列唯一值:COUNT(DISTINCT col) 会忽略 NULL 值,仅计算非空唯一值的个数。
SELECT COUNT(DISTINCT c_birth_country) FROM customer;
统计多列组合唯一值:
SELECT COUNT(DISTINCT c_salutation, c_last_name) FROM customer;

数据区分度说明

在 TCHouse-X 中,DISTINCTGROUP BY 对字符的敏感度极高,以下三者会被视为完全不同的独立值:
零长度字符串 ("")
NULL 值 (NULL)
空格字符串 (" ")

注意事项与性能建议

无序性预警:TCHouse-X 不会自动对 DISTINCT 后的结果进行排序。如果业务需要有序输出,必须显式添加 ORDER BY 子句。
性能优化:在某些场景下,如果子查询中使用了 DISTINCT,可以考虑通过 JOINEXISTS 改写,以获得更优的执行计划。