sql server 查询去除重复数据
时间: 2025-04-01 11:23:21 浏览: 34
### SQL Server 中去除重复数据的方法
在 SQL Server 中,可以使用 `DISTINCT` 和 `GROUP BY` 来实现去重操作。以下是两种方法的具体说明以及示例。
#### 使用 DISTINCT 进行去重
`DISTINCT` 是一种简单有效的方式,用于返回唯一的不同值组合。它适用于只需要获取不重复记录的情况。
```sql
-- 对 COUNTRY 字段进行去重查询
SELECT DISTINCT COUNTRY
FROM psur_list; [^1]
```
此语句会从表 `psur_list` 的 `COUNTRY` 列中提取唯一的国家名称列表。
#### 使用 GROUP BY 进行去重
当需要对某些列分组并进一步处理时(例如聚合),可以选择 `GROUP BY`。如果仅是为了去重而无需额外计算,则性能可能会因具体情况有所不同[^2]。
```sql
-- 使用 GROUP BY 实现与上述 DISTINCT 类似的功能
SELECT COUNTRY
FROM psur_list
GROUP BY COUNTRY;
```
需要注意的是,在实际应用过程中,应考虑执行计划来决定哪种方式更适合当前场景。对于复杂查询或者大数据量环境下的表现差异尤为明显。
另外还提到了窗口函数 ROW_NUMBER() 可作为另一种解决方案之一:
```sql
WITH RankedData AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY COUNTRY ORDER BY (SELECT NULL)) AS RowNum
FROM psur_list
)
SELECT *
FROM RankedData
WHERE RowNum = 1;
```
以上代码通过分配给每组内的每一行编号,并选取第一个实例完成去重目的。
关于错误提示部分提到 MySQL 查询失败案例是因为尝试按照未选定字段排序违反标准语法规定所致[^3];而在 SQL Server 上构建相应正确形式如下所示:
```sql
-- 正确写法示范
SELECT COUNT(*), songid, MAX(new_time) as latest_new_time -- 添加必要的汇总运算符
FROM feedback
GROUP BY songid ;
```
这里我们假设希望按歌曲 ID 统计反馈次数的同时保留最新时间戳信息。
阅读全文
相关推荐

















