Sql 如何根据另一个表中某个值的计数设置一个表中的值
我正在使用的数据库(它与表1有关系): 我想根据表1中的“p”字符数设置帐户中的当前计数。考勤(现在,它是手动设置的)。我试着做一个类似这样的“计数”查询Sql 如何根据另一个表中某个值的计数设置一个表中的值,sql,ms-access,Sql,Ms Access,我正在使用的数据库(它与表1有关系): 我想根据表1中的“p”字符数设置帐户中的当前计数。考勤(现在,它是手动设置的)。我试着做一个类似这样的“计数”查询 UPDATE Accounts SET [Present Count] = (SELECT Count(*) FROM Table1 WHERE Table1.Attendance = 'P') WHERE Accounts.Username = Table1.Username 我也试过了 SELECT Count(Table1.Att
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”的总数计算得出的计数。您可以尝试在“按用户名计数”组的子查询中使用内部联接
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
正确的语法是:
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
,因为没有匹配项。我必须在表1中首先创建一个“我的计数”字段吗?如果是这样,我如何对不同的用户名进行不同的计数?我的计数是subqiry的别名。。以及相关的join子句。。在两个表之间连接不同的用户名,以便您拥有与accounts.中的用户名关联的正确用户名计数,以及分配相应结果的设置值。请在第3行添加示例数据时给我一个语法错误“缺少运算符”。我检查了,此查询显示了当前的手动设置值计数我希望他们被计算出来,并有他们相应的用户名显示在旁边them@HyperBrid . . . 此查询不显示任何内容。它应该修复您的更新
查询中的错误。当我运行它时,它不会更改计数