You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL窗口函数基础使用报错求助:avg(salary) over()语法错误

问题描述

我最近开始学习SQL,在MySQL中执行基础窗口函数时遇到问题,不清楚原因。

创建表语句:

CREATE TABLE Employee(
     emp_id INT PRIMARY KEY,
     first_name VARCHAR(15),
     last_name VARCHAR(15),
     birth_date DATE,
     sex VARCHAR(2),
     salary INT,
     supervisor_id INT,
     branch_id INT
);

已向该表插入若干员工数据,执行以下查询时报错:

select *, avg(salary) over() from mysql.employee;

报错信息:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() from mysql.employee' at line 1

原因分析

这个语法错误的核心原因是你的MySQL版本低于8.0。窗口函数(包括OVER()子句)是从MySQL 8.0版本才开始支持的特性,低版本MySQL无法识别OVER()语法,因此触发1064语法错误。

解决方案
  1. 检查MySQL版本
    执行以下语句确认当前版本:

    SELECT VERSION();
    

    如果返回的版本号小于8.0.0,就说明是版本不兼容问题。

  2. 升级MySQL版本(推荐)
    升级到MySQL 8.0及以上版本后,你可以直接使用窗口函数语法,原查询语句无需修改即可正常执行。

  3. 低版本替代写法
    如果暂时无法升级版本,可以用子查询实现相同的全局薪资平均效果:

    SELECT *, (SELECT AVG(salary) FROM mysql.employee) AS avg_salary
    FROM mysql.employee;
    

内容的提问来源于stack exchange,提问作者Zaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:04