使用where子句更新表

时间:2018-01-12 16:35:10

标签: mysql

我需要在更新声明上提供一些帮助。我有以下查询

  update totals
  set contacts = (SELECT 
      COUNT(*)
        FROM contact_events c
        JOIN users u
        ON c.user = u.id 
        GROUP BY c.user)
  where c.user = ext_id;

但是当我运行它时,我会在where子句'中找到未知的列c.user。

但是,我似乎无法在该连接上应用别名,所以我必须在这里使用语法做错事。

1 个答案:

答案 0 :(得分:1)

您必须使用JOIN来执行此类操作

UPDATE totals t
INNER JOIN (SELECT c.user, 
                COUNT(*) tot
            FROM contact_events c
        JOIN users u ON c.user = u.id GROUP BY c.user) u ON u.user = t.ext_id
SET t.contacts = u.tot