Mysql 使用group by时SQL查询无法运行
我创建这个查询是为了显示一个分支机构有多少员工和客户,它会给我重复的,因此我需要对他们进行分组。但是,当我添加分组依据时,查询无效。有人知道为什么吗Mysql 使用group by时SQL查询无法运行,mysql,sql,Mysql,Sql,我创建这个查询是为了显示一个分支机构有多少员工和客户,它会给我重复的,因此我需要对他们进行分组。但是,当我添加分组依据时,查询无效。有人知道为什么吗 SELECT B.branchID, B.branchName, COUNT(E.staffNo) AS "No. Of Employees", COUNT(C.customerID) AS "No. Of Customers" FROM Branch B, Employee E, Customer C WHER
SELECT B.branchID, B.branchName, COUNT(E.staffNo) AS "No. Of Employees", COUNT(C.customerID) AS "No. Of Customers"
FROM Branch B, Employee E, Customer C
WHERE E.employeeBranchID = B.branchID
AND B.branchID = C.customerBranchID
GROUP BY B.branchID;
大多数数据库需要GROUPBY items的列表==在聚合函数之前的select中的项目列表
大多数数据库需要group by items的列表==在聚合函数之前选择中的项目列表此查询最好写为:
SELECT B.branchID, B.branchName, COUNT(E.staffNo) AS "No. Of Employees", COUNT(C.customerID) AS "No. Of Customers"
FROM Branch B JOIN
Employee E
ON E.employeeBranchID = B.branchID JOIN
Customer C
ON B.branchID = C.customerBranchID
GROUP BY B.branchID, B.branchName;
如果您处于ANSI模式,则MySQL的行为与大多数其他数据库类似,并将返回错误,因为B.branchName
未聚合
注:
- 使用显式
语法。切勿在JOIN
子句中使用逗号FROM
- 所有非聚合列都在
分组依据中
- 如果
被声明为branchId
上的主键或唯一键,则原始查询符合ANSI标准。但是,大多数数据库仍然不接受该查询branch
SELECT B.branchID, B.branchName, COUNT(E.staffNo) AS "No. Of Employees", COUNT(C.customerID) AS "No. Of Customers"
FROM Branch B JOIN
Employee E
ON E.employeeBranchID = B.branchID JOIN
Customer C
ON B.branchID = C.customerBranchID
GROUP BY B.branchID, B.branchName;
如果您处于ANSI模式,则MySQL的行为与大多数其他数据库类似,并将返回错误,因为B.branchName
未聚合
注:
- 使用显式
语法。切勿在JOIN
子句中使用逗号FROM
- 所有非聚合列都在
分组依据中
- 如果
被声明为branchId
上的主键或唯一键,则原始查询符合ANSI标准。但是,大多数数据库仍然不接受该查询branch
B.branchID组 选择B.branchID,B.branchName,计数(E.staffNo)为“员工数量”,计数(C.customerID)为“客户数量” 从分支机构B左加入E上的员工E.employeeBranchID=B.branchID左加入B上的客户C.branchID=C.customerBranchID
B.branchID组 “无效”是什么意思?如果出现错误,请将错误包含在问题中。在mysql上,这应该有效,在其他数据库上,您需要将B.branchName添加到组中,您说的“无效”是什么意思?如果您遇到错误,请将错误包括在问题中。在mysql上,这应该有效,在其他数据库上,您需要将B.branchName添加到组BYI。我尝试了上述方法,但不幸的是,它也不起作用
1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第5行的“Customer C ON B.branchID=C.customerBranchID GROUP BY B.branchID,B.branch”附近使用的正确语法在客户CI尝试上述方法之前丢失不幸的是,它也不起作用1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第5行的“Customer C ON B.branchID=C.customerBranchID GROUP BY B.branchID,B.branch”附近使用的正确语法