【问题标题】:Dynamically Updating MySQL Table For Counting Matching Data动态更新 MySQL 表以计算匹配数据
【发布时间】:2021-08-31 12:33:34
【问题描述】:

在 MySQL 中,我为我的数据库创建了两个表,以在 React 前端提供数据。这些表包含动物在某些组中分类的信息,当用户从组类别中添加或删除动物时,我想使组大小的“计数”成为动态的。 第一个表的每一行都有一个自动递增的 ID,还有动物名称和它当前所在的组:

ID (auto-increment) Animal Group
1 Cat Domestic
2 Dog Domestic
3 Giraffe Wild
4 Lion Wild
5 Hyena Wild

在第二张表中,我正在跟踪每组中的动物数量:

Group Number in Group
Domestic 2
Wild 3

我曾尝试在 Node.js 云函数中使用 SQL 命令来实现这一点

SELECT count(*)
FROM first_table
WHERE Group = "Group_name";

其中“Group_name”是特定的组,例如家养或野生。即使 SQL 查询运行,它也不会更新 Groups 表。

我曾尝试在 MySQL 中使用触发器,但即使使用硬编码的行,它仍然不会更新表。任何有关触发器或 SQL 语句的帮助都会很棒!

【问题讨论】:

  • 请注意 group 是 MySQL 中的保留字,使其作为表/列标识符的选择很糟糕。而且我们通常不会存储派生数据
  • "即使 SQL 查询运行,它也不会更新....." 为什么 SQL 查询要进行更新?我认为有人发明了update 声明来做这些事情,但正如草莓所说,“我们通常不会存储派生数据”

标签: javascript mysql node.js


【解决方案1】:

使用视图可能是更好的解决方案。

CREATE VIEW groupcount AS
SELECT 
   `group` as animalgroup, 
   count(*) as groupcount
FROM first_table
GROUP BY `group`;

在此之后,您只需执行以下操作:

SELECT * FROM groupcount ;

这将为您提供每个animalgroup 的结果,计数为groupcount

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    相关资源
    最近更新 更多