我正在使用的数据库(与表1有关系)
我想根据Table1.Attendance中的“ P”字符个数来设置“帐户中的当前计数”(现在,它是手动设置的)。我尝试过进行如下所示的“计数”查询
UPDATE Accounts SET [Present Count] = (SELECT Count(*) FROM Table1 WHERE Table1.Attendance = 'P')
WHERE Accounts.Username = Table1.Username
我也尝试过
SELECT Count(Table1.Attendance) AS PCount HAVING ((Count(Table1.Attendance))='P'), Count(Table1.Attendance) AS ACount HAVING (Count(Table1.Attendance))='A'
FROM Table1
GROUP BY Username
但是这行不通,没有错误,没有更新或其他任何内容 也这样:
UPDATE Accounts
SET [Present Count] = (SELECT Count(*)
FROM Table1
WHERE Table1.Attendance = 'P' AND
Accounts.Username = Table1.Username
);
这将显示我在表格中手动设置的计数,而不是根据“ P”总数计算出的计数
答案 0 :(得分:0)
您可以尝试在子查询中对使用用户名的计数组使用内部联接
UPDATE A
SET A.[Present Count] = t.my_count
FROM Accounts AS A
INNER JOIN (
SELECT username, Count(*) AS my_count
FROM Table1
WHERE Table1.Attendance = 'P'
GROUP BY username
) AS t ON A.Username = t.Username
答案 1 :(得分:0)
正确的语法是:
UPDATE Accounts
SET [Present Count] = (SELECT Count(*)
FROM Table1
WHERE Table1.Attendance = 'P' AND
Accounts.Username = Table1.Username
);
编辑:
这返回什么值?
SELECT UserName, Count(*)
FROM Table1
WHERE Table1.Attendance = 'P'
GROUP BY Username
也许您所看到的'P'
并不是'P'
,而您只是因为所有内容都得到0
,因为没有匹配项。