繁体   English   中英

更新一个表中的计数ID值并显示在另一个表中的列中

[英]Update count ID values in one table and display in column of another

UPDATE CD
    SET cdNumOfTracks = (
        SELECT COUNT(cdID)
            FROM Track
        WHERE Track.cdID = CD.cdID
        GROUP BY cdID
        );

上面的查询用于计算表“ Track”中的“ cdID”,并使其在“ CD”表中显示为“ cdNumOfTracks”列。 “ cdID”是“ Track”表中的外键,来自“ CD”表。 该查询工作正常,但我必须手动运行此命令才能更新数据。

我将此数据库用作网站的一部分,该网站通过PHP / HTML表单获取数据,因此,我需要SQL后端自动更新。

为了使它正常工作,我需要能够添加一个轨道,并为其指定一个“ cdID”,然后在添加新轨道的同时向“ cdNumOfTracks”列中添加1

您问题的答案是使用触发器。 您至少需要一个触发器来进行插入和删除操作,并可能需要进行更新。 除非您的数据库很大,否则我建议您直接从CD获得计数。

我确实要注意一些事情。 由于group by ,如果没有匹配项,查询将返回NULL而不是0 通常,相关子查询不使用group by

UPDATE CD
    SET cdNumOfTracks = (SELECT COUNT(cdID)
                         FROM Track
                         WHERE Track.cdID = CD.cdID
                        );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM