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
    被声明为
    branch
    上的主键或唯一键,则原始查询符合ANSI标准。但是,大多数数据库仍然不接受该查询

这个查询最好写为:

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
    被声明为
    branch
    上的主键或唯一键,则原始查询符合ANSI标准。但是,大多数数据库仍然不接受该查询

选择B.branchID、B.branchName、计数(例如staffNo)作为“员工数量”,计数(C.customerID)作为“客户数量” 从分支机构B左加入E上的员工E.employeeBranchID=B.branchID左加入B上的客户C.branchID=C.customerBranchID
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”附近使用的正确语法