我不是一个数据库专家,尽管如此,我还是创建了一个语句,它通过表中唯一的组ids来计算ids函数,如下所示:
USE farm;
SELECT reg.grpId, COUNT(reg.id) as TOTAL FROM farm.reg group by reg.grpId;因为我不想在NodeJs服务器上操作,所以我需要知道是否可以像下面这样生成一个列,它会给我一个错误1064 -SELECT not valid at this position
声明:
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;谢谢!
发布于 2020-04-17 21:58:31
您不能对计算列执行您想要的操作。我建议使用视图和窗口函数(在MySQL 8.0中可用)
create view reg_view as
select r.*, count(*) over(partition by grpId) total
from reg r在MySQL < 8.0中,一个选项是使用聚合查询进行连接:
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.grpIdhttps://stackoverflow.com/questions/61273183
复制相似问题