Как мне сделать таблицу, основанную на сумме других столбцов в MySQL? - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужна помощь в формулировании этого вопроса.Я новичок в 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 |

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Альтернативой VIEW является добавление VIRTUAL сгенерированных столбцов к Table1.Вы можете добавить их с помощью команды 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

Демонстрация на dbfiddle

0 голосов
/ 14 февраля 2019

Я предлагаю создать представление здесь:

CREATE VIEW yourView AS (
    SELECT
        ID,
        A + B + C + D AS ABCD,
        A + B AS AB,
        C + D AS CD
    FROM TABLE_1
)

Вероятно, неэффективное решение попытаться сохранить эти данные в фактической материализованной таблице, потому что данные получены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...