我需要帮助解决这个问题。我是MySQL的新手。我敢问这个问题是被问到的,但我不知道问正确问题的术语。
假设我在MySQL中有两个表。表1是插入新数据的位置。表2应该自动更新。表2中的数据是表1每行中指定列的总和。
例如,
TABLE 1
| ID | A | B | C | D |
|----+----+----+----+----|
| 0 | 11 | 10 | 39 | 11 |
| 1 | 32 | 21 | 21 | 12 |
| 2 | 12 | 23 | 24 | 13 |
| 3 | 45 | 35 | 31 | 14 |
TABLE 2
| ID | ABCD | AB | CD |
|----+------+----+----|
| 0 | 71 | 21 | 50 |
| 1 | 86 | 53 | 33 |
| 2 | 72 | 35 | 37 |
| 3 | 125 | 80 | 45 |
答案 0 :(得分:2)
我建议在此处创建视图:
CREATE VIEW yourView AS (
SELECT
ID,
A + B + C + D AS ABCD,
A + B AS AB,
C + D AS CD
FROM TABLE_1
)
尝试将这些数据实际维护在实际的物化表中可能不是一个有效的解决方案,因为数据是派生的。
答案 1 :(得分:1)
VIEW
的替代方法是向VIRTUAL
添加Table1
generated columns。您可以使用ALTER TABLE
命令添加它们:
ALTER TABLE Table1
ADD COLUMN ABCD INT GENERATED ALWAYS AS (A+B+C+D) VIRTUAL,
ADD COLUMN AB INT GENERATED ALWAYS AS (A+B) VIRTUAL,
ADD COLUMN CD INT GENERATED ALWAYS AS (C+D) VIRTUAL;
使用VIRTUAL
关键字意味着这些值是在读取行时计算的,而不是存储在表中的。完成此操作后,您现在可以
SELECT * FROM Table1
输出
ID A B C D ABCD AB CD
0 11 10 39 11 71 21 50
1 32 21 21 12 86 53 33
2 12 23 24 13 72 35 37
3 45 35 31 14 125 80 45