一个表里面有多个字段,根据其中的一个字段进行去重,并且返回所有的字段

2023-07-08 18:52:57 浏览数 (2)

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 字段去重后的所有字段的值。

0 人点赞