如果我运行此查询:
SELECT
a,
b,
c,
...
FROM [DMS].[dbo].[CreditDebitAdjustment]
我收到24197条记录。
如果我运行此查询:
SELECT DISTINCT
a,
b,
c,
...
FROM [DMS].[dbo].[CreditDebitAdjustment]
我收到了24176条记录。
如何仅选择相同的行?
答案 0 :(得分:5)
SELECT
a,
b,
c
FROM [DMS].[dbo].[CreditDebitAdjustment]
group by a,b,c
having count(*) > 1
答案 1 :(得分:1)
如果要删除这些重复项,请使用
;WITH CTE AS
(
SELECT
a, b, c,
RowNum = ROW_NUMBER() OVER(PARTITION BY a,b,c ORDER BY ...(define how to order those rows)..)
FROM
[DMS].[dbo].[CreditDebitAdjustment]
)
DELETE FROM CTE
WHERE RowNum > 1
这通过元组(a,b,c)
对所有数据进行“分区”(分组),并为每一行提供一个数字 - 从每个新元组的1开始。
因此,如果您的RowNum
大于1,那么这是重复的,我将其删除。
但实际上:任何严肃的数据表都应该一个合适的主键!