在sql server表中查找重复记录

时间:2017-08-29 17:29:54

标签: sql-server

我知道这是一个非常常见的问题,并且已经回答并且在很多次问题上都有问题,我有一个相同的情况,但有一个小问题

我正在尝试使用group by子句获取重复项,如果它们存在则进行更新,如果它们不只是执行插入

SELECT      name,age,sex, COUNT(1) as CNT
FROM        CUSTOMER
GROUP BY    name,age,sex;

还有一个名为datecreated的字段,其中包含当前时间戳,每个记录都有所不同,甚至是重复记录

如何创建一个将阻止此操作的查询,如果以上所有内容的cnt大于1,只需执行update,然后执行{{} 1}}

1 个答案:

答案 0 :(得分:0)

尝试这样的方法来查找重复项。 如果是> 1表示它是重复的,然后更新else insert。

Select name,age,sex from 
(SELECT name,age,sex, row_number() over (partition by name,age,sex order by name) rn
FROM CUSTOMER) as a
Where a.rn > 1       ---- for finding duplicate records 

修改

根据您的要求不同,检查它是否有效。

IF EXISTS (SELECT * FROM CUSTOMER WHERE name = 'your_value1' and age ='your_value2' and sex = 'your_value3')
UPDATE CUSTOMER set name = 'your_value1',age ='your_value2',sex = 'your_value3'
where name = 'your_value1' 
and age ='your_value2' 
and sex = 'your_value3'
ELSE 
insert into CUSTOMER(name,age,sex) VALUES ('Your_value1','your_value2','your_value3')