Ollivander 的库存挑战:在 Mysql 编译器中显示 row_number() over(partition by) 中的语法错误

Ollivander's Inventory challenge: Error showing syntax error in row_number() over(partition by ) in Mysql compiler

提问人:Kartike Raj 提问时间:4/9/2023 最后编辑:SelVaziKartike Raj 更新时间:4/9/2023 访问量:50

问:

select id,
       age,
       coins_needed,
       power
from(select wands.id as id,
       wands.code as code,
       wands_property.age as age,
       wands.coins_needed as coins_needed,
       wands.power as power,
       wands_property.is_evil as is_evil,
       row_number() over(partition by wands.code,wands.power order by wands.code,wands.power,wands.coins_needed) as rownum
from wands inner join wands_property
on wands.code = wands_property.code
order by wands.code,wands.power) sub
where is_evil = 0 and rownum = 1
order by 4 DESC,2 DESC

我正在解决黑客排名中的一个挑战,我必须使用,而在黑客排名的MySQL编译器中,存在如下语法错误:-row_number()

第 1 行出现错误 1064 (42000):SQL 语法中有错误; 查看与您的 MySQL 服务器版本相对应的手册,了解 在 '(按 wands.code,wands.power 顺序分区)使用的正确语法 作者:wands.code,wands.power,wands.coins' 第 11 行

我在MySQL工作台中尝试了相同的查询,令我惊讶的是,查询正在运行并且没有显示任何错误。谁能解释一下这里真正的问题是什么。

mysql 编译器错误 语法错误 行号

评论

0赞 SelVazi 4/9/2023
你能检查mysql的版本吗?
0赞 Kartike Raj 4/9/2023
黑客等级使用(5.7.27-0ubuntu0.18.04.1) MySQL版本
0赞 SelVazi 4/9/2023
那么错误就很清楚了,MySQL从8.0版开始引入了该函数ROW_NUMBER()

答:

0赞 SelVazi 4/9/2023 #1

第 1 行出现错误 1064 (42000):SQL 语法中有错误; 查看与您的 MySQL 服务器版本相对应的手册,了解 在 '(partition by ....' 附近使用的正确语法在 11 号线

如果您收到此错误,则可能是您在旧的mysql / mariadb下运行

MySQL/MariaDB 从 Mysql 的 8.0 版和 MariaDB 的 10.2 版开始引入了该函数和其他窗口函数。ROW_NUMBER()