sql去重

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 中一些其他去重数据的方法。

猜你喜欢

转载自blog.csdn.net/qq_45800977/article/details/130209606