用row_number去重
时间: 2023-07-18 07:03:04 浏览: 81
将MySQL去重操作优化到极致的操作方法
`ROW_NUMBER()`函数是用来产生行号的,如果要用它进行去重,可以先把需要去重的列组合起来,然后再使用`ROW_NUMBER()`函数给每一行打上行号,最后只保留行号为1的记录。
例如,假设我们有一个表`my_table`,其中包含列`col1`、`col2`和`col3`,现在要根据`col1`和`col2`进行去重,可以使用以下 SQL 语句:
```
SELECT col1, col2, col3
FROM (
SELECT col1, col2, col3,
ROW_NUMBER() OVER(PARTITION BY col1, col2 ORDER BY col3) AS rn
FROM my_table
) t
WHERE rn = 1;
```
上述 SQL 语句中,首先使用子查询对需要去重的列进行组合,并使用`ROW_NUMBER()`函数给每一行打上行号。`PARTITION BY`子句指定了按照哪些列进行分组,`ORDER BY`子句指定了在每个分组内按照哪一列进行排序。最后在外层查询中只保留行号为1的记录,即每个分组内的第一条记录,从而实现了去重的效果。
阅读全文