sql去重

文章介绍了SQL中去除重复数据的三种方法:使用DISTINCT关键字进行简单的去重操作;利用GROUPBY结合聚合函数如COUNT统计每个唯一值的出现次数;以及运用窗口函数ROW_NUMBER()进行更复杂的数据筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.DISTINCT

在 SQL 中对数据进行去重可以使用关键字 DISTINCT 来实现。例如,假设要从一个名为 students 的表中查询所有不同的姓氏,可以使用以下语句:

SELECT DISTINCT last_name FROM students;

这将返回一个仅包含独特姓氏的结果集。据此,我们得出简单结论: 在 SELECT 语句中使用 DISTINCT 关键字即可对数据进行去重。

2.使用 GROUP BY 子句

使用 GROUP BY 语句可以将相同值的行分组,并对每个组执行聚合函数,例如 COUNT、SUM、MAX 等。因此,如果只需要得到某一列中不同的值,可以将该列用于 GROUP BY 子句。

例如,在一个名为 students 的表中,要查询每个姓氏出现的次数:

SELECT last_name, COUNT(*) 
FROM students
GROUP BY last_name;

这将返回每个姓氏及其在表中出现的次数,去重后仅包含唯一姓氏。

3.使用窗口函数

使用窗口函数(Window Function)也可以进行去重操作。例如,使用 ROW_NUMBER() 函数可以为排序后的每个行指定唯一数字,然后可以根据它们过滤。

例如,在一个名为 orders 的表中,已经按订单号进行排序并希望获取最新的订单,可以使用以下 SQL 语句:

SELECT * FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY order_number ORDER BY order_date DESC) AS row_num
  FROM orders
) t
WHERE row_num = 1;

该语句中,ROW_NUMBER() 函数基于 order_number 列将行编号为一组。然后,使用 ORDER BY 子句对每个分区中的行按 order_date 列以降序排列,即时间最近的订单排在最上面。之后,通过过滤具有 row_num = 1 的行来获取每个 order_number 列的最新订单。

以上是 SQL 中一些其他去重数据的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值