我知道这是一个非常常见的问题,并且已经回答并且在很多次问题上都有问题,我有一个相同的情况,但有一个小问题
我正在尝试使用group by子句获取重复项,如果它们存在则进行更新,如果它们不只是执行插入
SELECT name,age,sex, COUNT(1) as CNT
FROM CUSTOMER
GROUP BY name,age,sex;
还有一个名为datecreated
的字段,其中包含当前时间戳,每个记录都有所不同,甚至是重复记录
如何创建一个将阻止此操作的查询,如果以上所有内容的cnt
大于1
,只需执行update
,然后执行{{} 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')