在处理SQL查询结果时,经常需要对数据进行去重处理,即去掉重复的数据。SQL中提供了一个DISTINCT关键字,专门用于过滤重复数据。
DISTINCT关键字用于在查询结果中过滤重复的记录。它将返回一组不重复的行,其中每行都包含查询中指定列的不同值。例如,以下查询将返回表"customer"中所有不重复的"name"列值:
sql
SELECT DISTINCT name FROM customer;
GROUP BY子句
除了DISTINCT关键字外,还可以使用GROUP BY子句与聚合函数结合来去掉重复数据。例如,以下查询将返回按"name"列分组的表"customer"中,每个组中"name"列的出现次数:
sql
SELECT name, COUNT(*) AS count FROM customer GROUP BY name;
用ROW_NUMBER()函数
ROW_NUMBER()函数是一个窗口函数,用于为每个组中的行分配唯一的行号。它可以用来实现类似于DISTINCT关键字的功能。例如,以下查询将返回表"customer"中所有不重复的"name"列值:
sql
SELECT name FROM (SELECT name, ROW_NUMBER() OVER (PARTITION BY name ORDER BY name) AS row_num FROM customer) AS subquery WHERE row_num = 1;