create table Statistics_tbl with (
SELECT Todo_tbl.person, SUM(Todo_tbl.duration) FROM Todo_tbl JOIN Statistics_tbl
on Todo_tbl.person = Statistics_tbl.person GROUP BY person;
);
问题是上面的代码不允许我创建一个将连接到另一个表 Todo_tbl 的表 Statistics_tbl。
报告的问题是:
- "')' 在这个位置无效。期待 EOF、ALTER、ANALYZE、BEGIN"
- "'(' 在这个位置无效。需要一个标识符。
见小提琴
在我重新阅读了how-can-i-join-two-tables-in-mysql-so-that-whenever-i-add-data-to-table-1-tabl 中的答案和评论后,我认为您正在寻找用于物化查询表 (MQT)。AFAIK 这些在 MySQL 中不存在,但您可以通过触发器创建自己的增量评估系统 (IES),例如:https ://fromdual.com/mysql-materialized-views
我在Fiddle添加了一个插入触发器的小示例。您必须添加相应的更新和删除。不用说,您还需要在表中添加键而不是空约束,以便可以安全地识别行。免责声明,我不太了解 MySQL,所以我不知道您可能需要考虑哪些并发问题(例如丢失更新)
上一个答案中建议的视图有什么问题?
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ff57cb2a8755e2c2ee8136e75c47bd38