首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用count在MySql中创建生成的列

使用count在MySql中创建生成的列
EN

Stack Overflow用户
提问于 2020-04-17 21:46:29
回答 1查看 588关注 0票数 1

我不是一个数据库专家,尽管如此,我还是创建了一个语句,它通过表中唯一的组ids来计算ids函数,如下所示:

代码语言:javascript
运行
复制
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

声明:

代码语言:javascript
运行
复制
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;

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2020-04-17 21:58:31

您不能对计算列执行您想要的操作。我建议使用视图和窗口函数(在MySQL 8.0中可用)

代码语言:javascript
运行
复制
create view reg_view as
select r.*, count(*) over(partition by grpId) total
from reg r

在MySQL < 8.0中,一个选项是使用聚合查询进行连接:

代码语言:javascript
运行
复制
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
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61273183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档