首页 > 解决方案 > SQL:如何更新具有唯一值的列

问题描述

下面是一个 MySQL 查询:

SELECT 
    COUNT(*) AS counted, employer_group
FROM
    employer_survey
GROUP BY employer_group
HAVING counted > 1;

在我将表定义更改为employer_group唯一之前,我需要为to的值创建一条UPDATE语句,以便更改表不会因为值而失败。CONCAT()created_dtemployer_group

我该怎么做呢?我无法返回id列,因为我正在使用GROUP BYand HAVING

我应该提到我希望id返回该列,因此我可以在我的语句中使用上面SELECTIN子句UPDATE。这可能不是最好的方法。

标签: mysqlsql

解决方案


你可以这样做join

update employer_survey es join
       (select es2.employer_group
        from employer_survey es2
        group by es2.employer_group
        having count(*) > 1
       ) eg
       on es.employer_group = eg.employer_group
    set es.employer_group = concat_ws(' ', es.employer_group, es.created_dt);

推荐阅读