根据另一个表中的行数填充表中的列

时间:2019-04-26 12:15:23

标签: mysql

我有两个表,即用户和库存。表users中的用户id(id)是对表库中current_owner列的外键约束。我想根据users.id = stock.current_owner的行数更新users表中名为holdings的列。我尝试了以下查询,但似乎无法正常工作。

ALTER TABLE users ADD holdings INT UNSIGNED AS (COUNT * FROM stock WHERE stock.current_owner = users.id)

我需要有关此查询的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

您需要两个查询

使用alter添加列

  ALTER TABLE users ADD holdings INT UNSIGNED;

基于用户和count()子查询之间的联接,使用Update填充列

  UPDATE users 
  INNER JOIN (
    select current_owner, count(*) mycount
    from stock 
    GROUP BY current_owner
  ) t ON t.current_owner = users.id 
  SET user.holdings = t.mycount
;