SQL 如果存在重复值则更新行

SQL update rows if duplicate values exists

基本上,为了简化问题,我想 table 像这样:

VALUE | OTHER
----- | -----
a     | null
b     | null
c     | null
c     | null
d     | null
e     | null

并且仅将 c 行的(因为重复值)“OTHER”字段更新为“重复”。

您没有指定 table 的名称,所以我将其命名为 table1。关键部分是使用带有 group byhaving 语句来识别重复项(计数 > 1 的行):

update table1 set OTHER = 'duplicate' where "value" in 
(select "value" from table1 group by "value" having count("value")>1);

http://sqlfiddle.com/#!17/c3df5/4/1

使用任意子句解决问题。

with a as 
(select "value" from table1 group by 1 having count("value") >1)
update table1 set OTHER = 'duplicated' where "value" = any(a);