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 by
的 having
语句来识别重复项(计数 > 1 的行):
update table1 set OTHER = 'duplicate' where "value" in
(select "value" from table1 group by "value" having count("value")>1);
使用任意子句解决问题。
with a as
(select "value" from table1 group by 1 having count("value") >1)
update table1 set OTHER = 'duplicated' where "value" = any(a);
基本上,为了简化问题,我想 table 像这样:
VALUE | OTHER
----- | -----
a | null
b | null
c | null
c | null
d | null
e | null
并且仅将 c
行的(因为重复值)“OTHER”字段更新为“重复”。
您没有指定 table 的名称,所以我将其命名为 table1
。关键部分是使用带有 group by
的 having
语句来识别重复项(计数 > 1 的行):
update table1 set OTHER = 'duplicate' where "value" in
(select "value" from table1 group by "value" having count("value")>1);
使用任意子句解决问题。
with a as
(select "value" from table1 group by 1 having count("value") >1)
update table1 set OTHER = 'duplicated' where "value" = any(a);