我有两张 table 。
员工表
有两个属性。(employee_ID (PK), office_id)
Office table
有两个属性。(office_id(PK),位置)
。
我需要每个办公室的员 worker 数。
所以我编写了以下查询。
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
我收到以下错误。 “列引用“O.LOCATION”无效,或者属于无效表达式的一部分
”
最佳答案
当您执行 GROUP BY 时,SELECT 中的所有内容都必须是聚合或 GROUP BY 中的内容。将 COUNT 和 OFFICE_ID 移至子查询并将它们连接回主表。
您必须检查字段名称,看起来您在 EMPLOYEE 中的 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 确实允许非标准行为,对于转移注意力感到抱歉。但是尝试单独运行括号内的部分并使其运行,然后将其放回到整个查询中并使其运行,当一切正常时,您可以将其削减回较短的符号。
关于mysql - 使用 group by 时出现无效表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195273/