在mysql中使用别名不起作用

在mysql中使用别名不起作用,mysql,Mysql,我被别名的用法弄糊涂了。例如,下面的查询工作正常 select * from ( select ROW_NUMBER() over (partition by prodid order by quantity desc) as 'rankin',prodid,quantity from sales ) A where rankin=1 但当我修改它时,如下面的代码段所示,我得到了错误:“无效的列名‘rownumber’” 请解释差异。这是因为SELECT是在WHERE之后执行的,而FROM是

我被
别名的用法弄糊涂了。例如,下面的查询工作正常

select * from 
(
select ROW_NUMBER() over (partition by prodid order by quantity desc) as 'rankin',prodid,quantity from sales
) A
where rankin=1
但当我修改它时,如下面的代码段所示,我得到了错误:“无效的列名‘rownumber’”


请解释差异。

这是因为
SELECT
是在
WHERE
之后执行的,而
FROM
是在
WHERE
之前执行的,因此它不能在第二次查询中使用,但可以在第一次查询中使用。

Erm,在哪个版本的
mysql
没有
行号()超过
select ROW_NUMBER() over (order by quantity) as 'rownumber' from sales
where rownumber = 1