MySQL中的自动列值更新

时间:2014-03-19 13:27:45

标签: mysql sql

也许我完全错了,在MySQL中做这件事并不合适。但是,我想要做的是在选择查询中填写列行基础:

例如:

表1:

IdNode  NodeName  NodeContact NodeStatus Nodegroup
  1     Machine1     IT           1         IT
  2     Machine2     IT           0         IT
  3     Machine3     IT           1         IT
  4     Machine4     IT           1        Others
  4     Machine5     IT           1        Others

表2

IdGroup  GroupName   NodesManagedbyGroup
   1         IT             ??
   2         others         ??

有了这两个表,我想(自动)填写表2中NodesManagedbyGroup列中的所有行。

手动它会是:

SELECT COUNT(*) FROM table1 where MemberOfGroup='IT';

结果值Int = 3

然后

update table2 NodesManagedbyGroup = 3 where GroupName='IT';

MySQL有任何方法可以自动为我做这件事

3 个答案:

答案 0 :(得分:3)

您可以使用triggers执行此操作 - 您可以在表1上创建插入,更新和删除触发器以更新表格。

这通常是一个坏主意 - 它在数据库周围复制信息,使模式非规范化。

或者,您可以创建一个view来动态计算此数据,并在查询时表现得像一个表。

答案 1 :(得分:1)

使用multiple UPDATE语法选择子查询中的计数作为示例:

UPDATE 
  table2 
    INNER JOIN 
    (SELECT COUNT(1) AS gcount, Nodegroup FROM table1 GROUP BY Nodegroup) AS counts 
    ON table2.GroupName=counts.Nodegroup 
SET 
  table2.NodesManagedbyGroup=table1.gcount

答案 2 :(得分:0)

您可以设置一个每15分钟左右执行一次存储过程的作业吗?