Mysql8.0中的select子查询问题

时间:2019-04-02 13:15:26

标签: mysql-8.0

为什么在mysql中无效的sql语句下面。它在oracle中完美运行。

SELECT originalAmount,fees,id FROM 
(SELECT originalAmount,fees,id, ROW_NUMBER() OVER (PARTITION BY transaction_number ORDER BY eventdate ASC) RANK FROM kir_records where customerid= 1704) 
WHERE RANK = 1;

将其粘贴到mysql工作台中后,我立即收到语法错误。

错误: 首先选择Select is invalid at this position. Expecting '('

是否有解决方法可以使这项工作正常?

2 个答案:

答案 0 :(得分:0)

尝试使用此查询。

shouldFilter()

答案 1 :(得分:0)

看起来RANK是MySql中的保留字。在RANK周围使用反引号(``),它按预期工作。需要注意的另一件事是,每个派生表(AKA子查询)确实必须具有别名。 Dervied Table alias

以下是对我有用的查询:

SELECT originalAmount,fees,id FROM 
(SELECT originalAmount,fees,id, ROW_NUMBER() OVER (PARTITION BY transaction_number ORDER BY eventdate ASC) `RANK` FROM kir_records where customerid= 1704) AS SomeAlias
WHERE `RANK` = 1;