DISTINCT 用于在 SELECT 查询中过滤重复数据,仅保留唯一的行或值组合。核心用法
单列去重
检索某一列中所有不重复的值。
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 改写,以获得更优的执行计划。