读取时去重要点
- SELECT DISTINCT 列 去除该列组合的重复行
- 多列 DISTINCT 是对整行组合去重,不是逐列独立
- GROUP BY 列 也能得到不重复的代表行
- DISTINCT 与 GROUP BY 在多数列下结果常等价
- 去重只影响查询结果,不会改动表里的真实数据
- 大表去重走不了索引会很慢,注意数据量
读取时去重示例
-- 只看有哪些不同的城市
SELECT DISTINCT city FROM member;
-- 多列去重
SELECT DISTINCT email, phone FROM member;
-- 等价写法:按组合分组
SELECT email, phone
FROM member
GROUP BY email, phone;
避坑提醒:DISTINCT 是对 SELECT 后面所有列的组合去重,想'按 A 去重但保留 B 最新'它做不到,得用窗口函数或子查询。