You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL表存在重复值时更新duplicated标记列的问题咨询

问题原因

你编写的SQL存在两个核心问题:

  1. 缺少主表和子查询的关联条件,无法精准匹配到存在重复值的对应行,要么会更新全表要么直接语法报错
  2. 直接用table作为表名属于SQL保留关键字,也会引发执行报错,需要替换为实际的业务表名

兼容多数据库的通用写法

该写法适配MySQL、PostgreSQL、SQL Server等绝大多数主流数据库:

UPDATE 你的实际表名
SET duplicated = true
WHERE name IN (
    -- 嵌套一层子查询规避部分数据库不允许UPDATE时直接引用原表的限制
    SELECT name FROM (
        SELECT name
        FROM 你的实际表名
        GROUP BY name
        HAVING COUNT(*) > 1
    ) AS duplicate_names
);

PostgreSQL专属简化写法

如果你使用的是PostgreSQL,还可以用UPDATE JOIN的写法,执行效率更高:

UPDATE 你的实际表名 t
SET duplicated = true
FROM (
    SELECT name
    FROM 你的实际表名
    GROUP BY name
    HAVING COUNT(*) > 1
) AS sub
WHERE t.name = sub.name;

内容的提问来源于stack exchange,提问作者Funny Dog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:00:03