【问题标题】:Mysql ERROR 1064 in syntax of over partition by [duplicate]Mysql ERROR 1064 in the syntax of over partition by [重复]
【发布时间】:2021-08-11 15:47:26
【问题描述】:

我最近将我在 ubuntu 上的 mysql 实例从 5.7 更新到 8.0.26,以使用窗口函数。我用 select @@version 检查了版本,它显示 8.0.26。但是我通过分区获取数据的查询仍然无法正常工作。

表结构是这样的

Table sensor_data
id   asset_code   server_time

以下查询给出错误代码:1064。您的 SQL 语法有错误;

SELECT id, ROW_NUMBER() OVER (PARTITION BY asset_code ORDER BY server_time DESC) rank
FROM sensor_data

【问题讨论】:

    标签: mysql


    【解决方案1】:

    问题在于您为调用ROW_NUMBER 指定的rank 别名。在 MySQL 8+ 中,RANK 成为引用分析函数 RANK() 的保留关键字。请注意,在 MySQL 5.7 和更早版本上使用 rank 的别名非常好。只需更改别名,您的代码就可以工作:

    SELECT id, ROW_NUMBER() OVER (PARTITION BY asset_code ORDER BY server_time DESC) rnk
    FROM sensor_data
    

    【讨论】:

    • 或者,可以使用保留关键字(如rank)作为别名,方法是用反引号分隔它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多