SQL 在另一个 Table 中维护相关记录的最新计数
SQL Maintain Up to Date Count of Related Records in Another Table
我有两个相关的 table。一个用于文章类别,另一个用于文章。我想维护 "Categories" table 中按类别分类的文章数。我的table如下:
类别
ID | CatName | ArticleCount
1 | Cat1 |
2 | Cat2 |
3 | Cat3 |
文章
ID | CatID | ArticleName
1 | 1 | Art1
2 | 2 | Art2
3 | 3 | Art3
4 | 1 | Art4
使用 SQL,我如何在添加文章时持续更新类别 table,以便我可以按类别维护最新的文章数量?根据我提供的示例数据,我设想我的类别 table 会像这样结束:
类别(根据文章中的相关记录自动更新 ArticleCount table)
ID | CatName | ArticleCount
1 | Cat1 | 2
2 | Cat2 | 1
3 | Cat3 | 1
您可以轻松完成的一个选项是将 ArticleCount 添加为类别中的计算字段 table,它指向计算该类别文章的 UDF
CREATE FUNCTION [dbo].[fn_cnt](@CatID INT)
RETURNS int
AS
BEGIN
RETURN (SELECT COUNT(1) FROM Articles WHERE CatID = @CatID)
END
GO
CREATE TABLE Categories(
[Id] INT,
[CatName] [varchar](64),
[ArticleCount] AS ([dbo].[fn_cnt]([Id]))
)
GO
希望对您有所帮助
我有两个相关的 table。一个用于文章类别,另一个用于文章。我想维护 "Categories" table 中按类别分类的文章数。我的table如下:
类别
ID | CatName | ArticleCount
1 | Cat1 |
2 | Cat2 |
3 | Cat3 |
文章
ID | CatID | ArticleName
1 | 1 | Art1
2 | 2 | Art2
3 | 3 | Art3
4 | 1 | Art4
使用 SQL,我如何在添加文章时持续更新类别 table,以便我可以按类别维护最新的文章数量?根据我提供的示例数据,我设想我的类别 table 会像这样结束:
类别(根据文章中的相关记录自动更新 ArticleCount table)
ID | CatName | ArticleCount
1 | Cat1 | 2
2 | Cat2 | 1
3 | Cat3 | 1
您可以轻松完成的一个选项是将 ArticleCount 添加为类别中的计算字段 table,它指向计算该类别文章的 UDF
CREATE FUNCTION [dbo].[fn_cnt](@CatID INT)
RETURNS int
AS
BEGIN
RETURN (SELECT COUNT(1) FROM Articles WHERE CatID = @CatID)
END
GO
CREATE TABLE Categories(
[Id] INT,
[CatName] [varchar](64),
[ArticleCount] AS ([dbo].[fn_cnt]([Id]))
)
GO
希望对您有所帮助