sqlserver 查询重复数据
时间: 2024-10-24 12:04:26 浏览: 27
在SQL Server中,查询重复数据通常需要使用聚集函数(如COUNT、MIN、MAX等)以及GROUP BY语句来识别特定列中相同的值。下面是一个基本的例子,假设我们要找出表`Sales`中`ProductID`重复并且`Quantity`相同的行:
```sql
SELECT ProductID, Quantity, COUNT(*) as DuplicateCount
FROM Sales
GROUP BY ProductID, Quantity
HAVING COUNT(*) > 1;
```
这个查询将返回每个`ProductID`和`Quantity`组合出现超过一次的数据。
如果你只想保留一条重复记录,并不确定保留哪一条,可以考虑使用ROW_NUMBER()窗口函数结合WITH TIES:
```sql
WITH CTE AS (
SELECT *, ROW_NUMBER() OVER(PARTITION BY ProductID, Quantity ORDER BY (SELECT NULL)) as RN
FROM Sales
)
SELECT *
FROM CTE
WHERE RN = 1;
```
这里,`ROW_NUMBER()`函数会为每一组重复的`ProductID`和`Quantity`分配一个行号,然后选择行号为1的那条记录,即每组的第一条。
阅读全文