sqlserver数据去重复的四种方法

心平气和看事 2025-02-12 04:05:09

在SQL中,有几种常见的去重复数据的方法,以下以MySQL为例进行介绍:

1. 使用 DISTINCT 关键字

DISTINCT 关键字用于返回唯一不同的值。它可以作用于单个列或多个列。

示例:

假设有一个名为 employees 的表,包含 id、name 和 department 列。

sql复制-- 对单个列去重

SELECT DISTINCT department

FROM employees;

-- 对多个列去重,只有当多个列的值都相同时才会被视为重复

SELECT DISTINCT name, department

FROM employees;

2. 使用 GROUP BY 子句

GROUP BY 子句可以根据一个或多个列对结果进行分组,在分组的过程中会自动去除重复的行。

示例:

sql复制-- 按照department分组,每组只保留一条记录

SELECT department

FROM employees

GROUP BY department;

-- 按照多个列分组

SELECT name, department

FROM employees

GROUP BY name, department;

通常在使用 GROUP BY 时,会结合聚合函数(如 COUNT、SUM、AVG 等)一起使用,用于对每个分组进行计算。例如:

sql复制SELECT department, COUNT(*)

FROM employees

GROUP BY department;

这个查询会统计每个部门的员工数量。

3. 使用 ROW_NUMBER() 窗口函数

ROW_NUMBER() 窗口函数可以为每一行分配一个唯一的行号,我们可以利用这个特性来去除重复行。

示例:

sql复制WITH ranked_employees AS (

SELECT

id,

name,

department,

ROW_NUMBER() OVER (PARTITION BY name, department ORDER BY id) AS row_num

FROM employees

)

SELECT id, name, department

FROM ranked_employees

WHERE row_num = 1;

在这个例子中,PARTITION BY name, department 表示按照 name 和 department 进行分区,在每个分区内,ROW_NUMBER() 函数会根据 id 列给每一行分配一个行号。最后,我们只选择行号为1的记录,从而达到去重的目的。

0 阅读:0
心平气和看事

心平气和看事

感谢大家的关注