我在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
第一次查询有什么问题?
答案 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
现在我也很困惑为什么它适合我?