我理解在处理一个表时SQL中的count(*)如何,但它如何在内连接上工作?
例如
SELECT branch, staffNo, Count(*)
FROM Staff s, Properties p
WHERE s.staffNo = p.staffNo
GROUP BY s.staffNo, p.staffNo
Run Code Online (Sandbox Code Playgroud)
工作人员包含员工没有员工姓名
属性包含属性管理细节(即哪个员工管理哪个属性)
这将返回工作人员管理的属性数量,但计数如何工作?至于它如何知道要算什么?
它是一个聚合函数 - 因此它由group by子句管理 - 每行对应一个唯一的分组(即staffNo),Count(*)将返回与该分组匹配的连接中的记录数.
例如:
SELECT branch, grade, Count(*)
FROM Staff s, Properties p
WHERE s.staffNo = p.staffNo
GROUP BY branch, grade
Run Code Online (Sandbox Code Playgroud)
将返回每个分支的特定职等的工作人员数量.
SELECT branch, Count(*)
FROM Staff s, Properties p
WHERE s.staffNo = p.staffNo
GROUP BY branch
Run Code Online (Sandbox Code Playgroud)
将返回每个分支的工作人员总数
SELECT grade, Count(*)
FROM Staff s, Properties p
WHERE s.staffNo = p.staffNo
GROUP BY grade
Run Code Online (Sandbox Code Playgroud)
将返回每个年级的员工总数