1 需求
一个表里面有多个字段,根据其中的一个字段进行去重,并且返回所有的字段
2 实现
使用窗口函数:
代码语言:javascript复制SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY unique_column) AS row_num
FROM table_name
) AS subquery
WHERE row_num = 1;
在上述示例中,table_name 是要查询的表名,column_name 是要去重的字段名,unique_column 是用于确定唯一行的辅助列(例如,主键或时间戳列)。
例如,如果你有一个名为 users 的表,其中包含 email 字段和 id 字段,你可以使用以下语句根据 email 字段进行去重查询并返回所有字段的值:
代码语言:javascript复制SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS row_num
FROM users
) AS subquery
WHERE row_num = 1;
这将返回根据 email 字段去重后的所有字段的值。