Error number: 3585; Symbol: ER_WINDOW_FRAME_END_ILLEGAL; SQLSTATE: HY000
Message: Window ‘%s’: frame end cannot be UNBOUNDED PRECEDING.
// 错误说明:
ER_WINDOW_FRAME_END_ILLEGAL错误表明当运行窗口函数时,窗口边界表达式不正确。窗口函数是MySQL 8.0中引入的新函数,用于从连续数据行中使用指定条件分组记录,以便在查询结果中进行聚合函数运算。
ER_WINDOW_FRAME_END_ILLEGAL错误通常在运行窗口函数时发生。当我们试图正确使用窗口函数时,有时会发生该错误。以下是示例:
SELECT id, avg(score) OVER (ORDER BY id ROWS BETWEEN CURRENT ROW AND 2)
FROM student;
// 解决方法:
ER_WINDOW_FRAME_END_ILLEGAL错误可以通过以下步骤解决:
1.确保窗口边界表达式正确无误,即前后边界之间限定符必须为“BETWEEN”,以及边界必须在以下类别之一:无限、相对边界、具体边界。
2.请确保语法及参数(如表达式)正确无误,例如,CURRENT ROW、 X PRECEDING、Y FOLLOWING 等参数必须放置在正确位置。
3.请确保根据程序运行规则和语义,边界约束适用于其组内所有行。
4.另外,其他查询语句语法也需要正确匹配,不允许空格或任何其他错误格式,如语法设计的SELECT子句中的字段必须是有效的。
5.如果仍存在问题,请检查数据库表,运行窗口函数时是否有足够的数据来检查是否存在问题,以及是否存在窗口边界解析问题。如果存在解析问题,根据要求识别错误行并将其修复。