我有两张桌子。
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”
发布于 2014-08-08 02:43:40
执行组BY时,SELECT中的所有内容都必须是聚合或组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),该表具有office以及其中有多少人,并将该表重新连接到OFFICE,以解析与该ID关联的office名称。
编辑:@Gordon是正确的,当然,MySQL确实允许这种不规范的行为,为鲱鱼感到抱歉。但是,尝试单独在圆括号内运行该部分,并使其运行,然后将其重新放入整个查询中,并使其运行,当所有这些操作正常时,您可以将其压缩为较短的符号。
https://stackoverflow.com/questions/25195273
复制相似问题