使用group by时无效的表达式错误

时间:2014-08-08 02:34:15

标签: mysql sql

我有两张桌子。

  • Employee table有两个属性。(employee_ID (PK), office_id)

  • Office table有两个属性。 (office_id (PK), location)

我需要每个办公室的员工人数。

所以我写了以下查询。

SELECT COUNT(E.EMPLOYEE_ID), O.LOCATION
 FROM REALSTATE.EMPLOYEE AS E, REALSTATE.OFFICE AS O 
 WHERE E.OFFICE_ID=O.OFFICE_ID
 GROUP BY E.OFFICE_ID 

我收到以下错误。 " Column reference 'O.LOCATION' is invalid, or is part of an invalid expression"

1 个答案:

答案 0 :(得分:0)

当您执行GROUP BY时,SELECT中的所有内容必须是聚合或GROUP BY。将COUNT和OFFICE_ID移动到子查询并将它们连接回主表。

您必须检查字段名称,看起来您在EFPLOYEE的OFFICE与OFFICE_ID上并不完全一致,但这应该适合您。

SELECT ECount, O.LOCATION
FROM (SELECT COUNT(E.EMPLOYEE_ID) as ECount, E.OFFICE
      FROM REALSTATE.EMPLOYEE AS E
      GROUP BY OFFICE) as C
INNER JOIN REALSTATE.OFFICE AS O on C.OFFICE=O.OFFICE_ID

基本前提是您构建一个中间表(C),其中包含办公室ID以及其中的人数,并将其加入OFFICE以解析与该ID相关联的办公室名称

编辑:@Gordon是正确的,当然,MySQL确实允许非标准行为,对不起红鲱鱼。但是尝试单独在括号内运行部件并使其运行,然后将其放回整个查询中并使其运行,当这一切都有效时,您可以将其缩回到较短的表示法。