where子句mysql中的别名

时间:2013-05-30 07:21:23

标签: mysql sql

我在mysql中编写以下查询,但它返回0行

select * from (select col1 as mycol from tbl) temp where temp.mycol = 5

但以下查询返回4行

select col1 as mycol from tbl where col1 = 5

第一次查询有什么问题?

3 个答案:

答案 0 :(得分:0)

在评论中回答您的问题:

  

我正在尝试一点变化,但它没有任何建议??? select * from(选择col1作为'my col'来自tbl)temp,其中'temp.my col'= 5 - Mandeep Singh 5月30日7:48

你在这里遇到的问题是MySQL正在寻找一个名为'temp.my col'的列,但你真正想要的是表my col中名为temp的列所以你需要这样做:

select * from (select col1 as `my col` from tbl) temp where `temp`.`my col` = 5

答案 1 :(得分:0)

如果要引用别名(在MySQL中),则需要使用HAVING而不是WHERE。你的第二行是有效的,因为你引用了别名,但是第一个语句失败了,因为 引用了WHERE的别名。

答案 2 :(得分:0)

它在我的结束时工作正常。但是我搜索你的问题并得到这个帖子:

Using column alias in WHERE clause of MySQL query produces an error

MySQL也说明了这一点: http://dev.mysql.com/doc/refman/5.6/en/problems-with-alias.html

现在我也很困惑为什么它适合我?