mysql - 使用 group by 时出现无效表达式错误

标签 mysql sql

我有两张 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/

相关文章:

mysql - 如何获取最新值并删除旧值?

mysql - 如何从主机连接 MySQL Docker 镜像?

mysql - SQL - 将范围之间的日期分解为新记录

mysql - 为什么这个 mysql 查询(带有 is null 检查)比另一个查询慢那么多?

C#自动从数据库更新数据

mysql - 如何为 InnoDB 引擎数据库重新播种 "Auto increment"列?

mysql - 按 MySQL 中查看次数最多的论坛线程排序

php - 如何使用 PHPMyAdmin 导出用户

java - H2 在 Junit 测试中未按问题检测组

PHP 搜索字符串是否在 MYSQL 行中