也许我完全错了,在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有任何方法可以自动为我做这件事
答案 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分钟左右执行一次存储过程的作业吗?