示例
示例
-- 组合去重
SELECT DISTINCT city, status FROM users;
-- PostgreSQL:每个 city 取 name 排序后的一行
SELECT DISTINCT ON (city) city, name
FROM users
ORDER BY city, name;MySQL 等价改写
MySQL 等价改写
SELECT city, name
FROM (
SELECT city, name,
ROW_NUMBER() OVER (PARTITION BY city ORDER BY name) AS rn
FROM users
) t
WHERE rn = 1;| 多列 DISTINCT | 去重的是列的组合,任一列不同即视为不同行 |
|---|---|
| DISTINCT ON | PostgreSQL 专有;用 ORDER BY 决定每组保留哪一行 |