使用 over() 和别名时的 mysql 错误

Posted

技术标签:

【中文标题】使用 over() 和别名时的 mysql 错误【英文标题】:mysql error when using over() and an alias 【发布时间】:2018-11-06 14:20:07 【问题描述】:

使用 phpMyAdmin 控制台和 MariaDB 10.2,如果我将 over() 函数与别名结合使用,则会出现各种错误:

SELECT AVG(foo) OVER() AS bar FROM some_table
之前发现了一个别名(靠近 bar) 意外标记(靠近条形) 需要一个别名(附近)

这些带有任一功能的语句都不会给我错误

SELECT AVG(foo) AS bar FROM some_table

SELECT AVG(foo) OVER() FROM some_table

我能找到的所有内容都暗示这些错误来自基本错误,例如逗号不合适,或使用保留关键字作为别名。我不认为我在做任何事情。

【问题讨论】:

这里使用OVER()的目的是什么? 这只是语法模式的一个简化示例。我正在尝试使用 OVER() 在更复杂的查询中计算线性回归。为了计算线性回归,我需要对每个单独的值和该组值的平均值进行运算。 【参考方案1】:

似乎 phpMyAdmin 用于验证语法的 linter 尚未针对这种似乎已在 MariaDB 10.2 中引入的语法进行更新。虽然这很烦人,但您可以忽略警告并运行您的查询。

我在https://github.com/phpmyadmin/sql-parser/issues/197 上打开了一个关于它的错误报告,您可以在此继续关注,直到错误得到修复。

【讨论】:

以上是关于使用 over() 和别名时的 mysql 错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 语法中 OVER 和 PARTITION 的语法错误

mysql别名引号与引用问题

mysql别名引号与引用问题

mysql别名引号与引用问题

mysql别名引号与引用问题

在 MySQL 查询的 WHERE 子句中使用列别名会产生错误