SQL执行JOIN关联查询时报invalid identifier错误如何解决
错误原因
- 聚合函数前缀错误:
COUNT、SUM是全局聚合函数,不能加表别名e.作为前缀,正确写法是把表别名加在待聚合的字段上,即COUNT(e.empID)、SUM(e.salary) - 关联表未定义别名:右连接的
division表没有声明别名d,后续代码中用到的d.dname、d.DID属于未定义标识符,触发报错 - GROUP BY规则不符合:SQL要求SELECT子句中所有非聚合字段必须全部出现在GROUP BY子句中,原查询里
d.dname没有加入GROUP BY,同时DID没有指定所属表,存在字段歧义 - 右连接字段取值逻辑错误:使用右连接时,如果部门下没有员工,
e.DID会返回NULL,应该取division表的DID作为部门ID,才能正确展示所有部门的统计结果
修复后的SQL语句
SELECT COUNT(e.empID) AS emp_count, SUM(e.salary) AS salary_total, d.DID, d.dname FROM employee e RIGHT JOIN division d ON e.DID = d.DID GROUP BY d.DID, d.dname
如果需要把无员工部门的薪资总和从NULL转为0,可以调整聚合函数写法:
SELECT COUNT(e.empID) AS emp_count, COALESCE(SUM(e.salary), 0) AS salary_total, d.DID, d.dname FROM employee e RIGHT JOIN division d ON e.DID = d.DID GROUP BY d.DID, d.dname
内容的提问来源于stack exchange,提问作者liam12808
相关产品推荐
相关产品推荐

