mysql对取别名后不能select

更新时间:01-25 教程 由 留井 分享

在使用MySQL时,我们经常会用到取别名(AS)来简化表达式,但是在使用了别名之后,有时却不能再对其进行SELECT操作,这是为什么呢?

SELECT COUNT(*) AS num FROM table1;SELECT num FROM table1; -- 这里会报错:Unknown column 'num' in 'field list'

以上代码中,我们使用AS给COUNT(*)起了一个别名num,在第二行代码中,我们尝试用num作为列名再次SELECT,却出现了Unknown column 'num' in 'field list'的错误。

原因是,MySQL执行SELECT语句的顺序是先执行FROM子句中指定的表,然后根据WHERE子句过滤,最后才进行SELECT操作。在结果集生成后,才会根据查询结果的列名进行别名替换,因此在SELECT子句中使用别名会出现“未知列”的错误。

解决方法是使用子查询,在查询结果集生成之前先对别名进行替换。

SELECT num FROM (SELECT COUNT(*) AS num FROM table1) as temp;

以上代码中,我们先将COUNT(*)的结果作为子查询,再将其替换为别名num,这样就可以顺利地SELECT了。

声明:关于《mysql对取别名后不能select》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2254649.html