示例
示例
WITH ranked AS (
SELECT u.*,
ROW_NUMBER() OVER (PARTITION BY u.email
ORDER BY u.updated_at DESC, u.id DESC) AS rn
FROM users u
)
SELECT id, email, updated_at
FROM ranked
WHERE rn = 1;| 思路 | 按去重键分区,按“保留优先级”排序取首行 |
|---|---|
| 优势 | 输出完整行,不受聚合列限制 |
| 删除重复 | MySQL 可 DELETE 连子查询句柄删除多余行 |