我想基于同一表中另一列的计数来更新一列。我尝试下面的查询,但没有运气。

update
 table
set conntype='Multiple'
where (select COUNT(cpemac) as nos from table group by cpemac) > 1


我收到以下错误:

1093-您无法在FROM子句中指定目标表“表”进行更新

最佳答案

在MySQL中,您需要使用JOIN

update t join
       (select cpemac, count(cpemac) as nos
        from t
        group by cpemac
       ) tt
       on t.cpemac = tt.cpemac
    set t.conntype = 'Multiple'
    where cnt > 1;


这是MySQL的特定限制。

但是,我应该指出,您的版本无法在任何数据库中使用。根据子查询的结果,它将更新所有行或不更新任何行。子查询和外部查询之间没有连接。

10-06 12:08