一、单列去重
检索某一列中所有不重复的值。
·NULL 值处理:如果列中包含 NULL,DISTINCT 会将其作为一个独立的值返回。
— 返回客户所属的所有不重复国家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 中,DISTINCT 和 GROUP BY 对字符的敏感度极高,以下三者会被视为完全不同的独立值:
·零长度字符串 ("")
·NULL 值 (NULL)
·空格字符串 (" ")
五、注意事项与性能建议
·无序性预警:TCHouse-X 不会自动对 DISTINCT 后的结果进行排序。如果业务需要有序输出,必须显式添加 ORDER BY 子句。
·性能优化:在某些场景下,如果子查询中使用了 DISTINCT,可以考虑通过 JOIN 或 EXISTS 改写,以获得更优的执行计划。