首页 > 解决方案 > SQL Server:每列的更新+计数

问题描述

我正在尝试更新我的数据库。我的USER表格有一列NbFollower应该包含关注此用户的人数。

所以我需要从另一个表中计算那个数字FOLLOWING_USER

USER.UserID = 1出现 4 次FOLLOWING_USER。这意味着他有4个追随者。

如何为每个人同时使用 UPDATE 和 COUNT 函数?

UPDATE [USER]
SET NbFollower = (SELECT count(User)
                  FROM FOLLOWING_USER FU
                  INNER JOIN [USER] U ON FU.[User] = U.UserID)

这将为我的所有用户返回“13”(13 是 中的总行数FOLLOWING_USER

所以我需要这样的东西,但为我的所有用户自动化:

SELECT COUNT([User]) 
FROM FOLLOWING_USER 
WHERE [User] = 1

编辑:这里是我的桌子USER

CREATE TABLE [USER]
(
    UserID int IDENTITY(1, 1) PRIMARY KEY,
    URL varchar(50) NOT NULL,
    Name varchar(20) NOT NULL,
    Password varchar(50) NOT NULL,
    Email varchar(100) NOT NULL,
    Age int NOT NULL,
    Gender char(1) NOT NULL,
    Location varchar(50) NOT NULL,
    Description varchar(200) NULL,
    NbFollower int NULL DEFAULT 0,
    Rating int NULL DEFAULT 0
);

ALTER TABLE [USER]
    ADD ShareoutwardzID INT 
        FOREIGN KEY REFERENCES SHAREOUTWARDZ(ShareoutwardzID),
        CONSTRAINT Age CHECK (Age>=18);

INSERT INTO [USER] (Name, URL, Password, Email, Age, Gender, Location, Description, Rating)
VALUES
('lily', '/NAME', 'azertyuop123', 'lily@hotmail.com', 21, 'F', 'USA', NULL, 4);

这是我的桌子FOLLOWING_USER

CREATE TABLE FOLLOWING_USER
(
    [User] int NOT NULL FOREIGN KEY REFERENCES [USER](UserID),
    Follower int NOT NULL FOREIGN KEY REFERENCES FOLLOWER(UserID),
);

INSERT INTO FOLLOWING_USER([User], Follower)
VALUES (1, 9), (2, 9), (4, 9), (6, 9);

标签: sqlsql-servertsql

解决方案


UPDATE [USER]
SET NbFollower = UserCount.TotalCount
                 FROM [USER]
                 INNER JOIN (SELECT COUNT(User) TotalCount, User 
                             FROM [Following_User] GROUP BY User) As UserCount
                 ON UserCount.User = [USER].UserId

推荐阅读