Создать сгенерированный столбец в MySql с количеством - PullRequest
1 голос
/ 17 апреля 2020

Я не специалист по базам данных, несмотря на это, я создал оператор, который подсчитывает функцию идентификаторов по уникальным идентификаторам групп из таблицы:

USE farm;
SELECT reg.grpId, COUNT(reg.id) as TOTAL FROM farm.reg group by reg.grpId;

Поскольку я не хочу работать на сервере NodeJs мне нужно знать, возможно ли создать сгенерированный столбец, как показано ниже, что выдает ошибку 1064 -Выберите недопустимый в этой позиции

утверждение:

USE farm;
ALTER TABLE reg ADD total INT GENERATED ALWAYS AS(SELECT reg.grpId COUNT(reg.id) FROM farm.reg group by reg.grpId)STORED AFTER grpId;

Спасибо!

1 Ответ

1 голос
/ 17 апреля 2020

Вы не можете делать то, что вы хотите с вычисляемым столбцом. Я бы порекомендовал функции просмотра и окна (доступны в MySQL 8.0)

create view reg_view as
select r.*, count(*) over(partition by grpId) total
from reg r

В MySQL <8.0, есть возможность объединиться с агрегированным запросом: </p>

create view reg_view as
select r.*, g.total
from reg r
inner join (select grpId, count(*) total from reg group by grpId) g on g.grpId = r.grpId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...