SQL中的COUNT(*)

use*_*142 5 sql

我理解在处理一个表时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)

工作人员包含员工没有员工姓名

属性包含属性管理细节(即哪个员工管理哪个属性)

这将返回工作人员管理的属性数量,但计数如何工作?至于它如何知道要算什么?

Bon*_*nyT 8

它是一个聚合函数 - 因此它由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)

将返回每个年级的员工总数