Mysql

我無法在 mysql 中創建表

  • February 7, 2022
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”
  • “’(’ 在這個位置無效。需要一個標識符。

小提琴

create table Statistics_tbl (person VARCHAR(45), sum_duration INT)
   SELECT Todo_tbl.person, SUM(Todo_tbl.duration) sum_duration
   FROM Todo_tbl
   GROUP BY person;

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ff57cb2a8755e2c2ee8136e75c47bd38

在我重新閱讀了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://dba.stackexchange.com/questions/307082