MySQL窗口函数SQL语句报错求助:ER_PARSE_ERROR语法错误
问题原因与解决方案
错误原因
你写的SQL用了OVER (PARTITION BY)窗口函数,但MySQL 5.7及更早版本不支持窗口函数,这是触发语法错误(ER_PARSE_ERROR)的核心原因。
解决方法
方法1:升级MySQL版本
把MySQL升级到8.0或更高版本,升级后就能直接运行你写的SQL:
select student_id, student_name, count(student_department) over (partition by student_department) as department_total from students;
方法2:分组连接替代(无需升级)
如果没法升级,用子查询统计部门人数再和原表连接,能达到同样效果:
SELECT s.student_id, s.student_name, dept.department_total FROM students s JOIN ( SELECT student_department, COUNT(*) AS department_total FROM students GROUP BY student_department ) dept ON s.student_department = dept.student_department;
这个写法先通过子查询算出每个部门的总人数,再通过JOIN把每个学生对应的部门人数关联回去,结果和窗口函数的输出一致。
内容的提问来源于stack exchange,提问作者Kanza Fatima
相关产品推荐
相关产品推荐

