正在添加列并添加COUNT个数据

时间:2019-06-09 12:16:40

标签: mysql sql constraints

我应该从一个表的列中获取计数,并在另一个表中使用该计数创建一个新列。

在关系表DAY CARE CENTER中添加有关每个日托中心处理的总登记人数的信息。请注意,如果日托中心没有处理注册,那么对于该日托中心,必须将注册总数设置为零。在关系表DAY CARE CENTER上施加适当的一致性约束。

我根本没有任何适当的代码。我尝试了多种变体,但没有任何效果。我从另一个名为DAY_CARE_ENROLMENT的表中获得的注册数量。

我是sql的新手,请原谅我的愚蠢错误。有人可以帮忙吗?

ALTER TABLE DAY_CARE_CENTER  
ADD totalEnrol INTEGER(1) DEFAULT '0';

UPDATE DAY_CARE_CENTER
SET totalEnrol = COUNT(enrolStartDate)
WHERE centerID IN (SELECT centerID FROM DAY_CARE_ENROLMENT
WHERE DAY_CARE_CENTER.centerID=DAY_CARE_ENROLMENT.centerID);

1 个答案:

答案 0 :(得分:1)

如果我的理解正确,那么您需要先进行汇总,然后再尝试使用UPDATE。也就是说,在子查询中聚合,然后JOIN聚合到要更新的表中:

UPDATE DAY_CARE_CENTER dcc JOIN
       (SELECT dce.centerID, COUNT(*) as cnt
        FROM DAY_CARE_ENROLMENT dce
        GROUP BY dce.centerID
       ) dce
       ON dcc.centerID = dce.centerID
    SET totalEnrol = cnt;

这可能是一个不好的方法。下次DAY_CARE_ENROLMENT中的一行更改时,该计数将过时。您将需要重新运行UPDATE或开始使用insert / update / delete触发器。

最好实时计算这些值。仅在出于性能原因需要时才对其进行汇总。