3

I am writing following query in mysql, but it returning 0 rows

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

but the following query returning 4 rows

select col1 as mycol from tbl where col1 = 5

what is wrong with 1st query?

4

3 回答 3

0

它在我的尽头工作正常。但我搜索你的问题并得到这个线程:

在 MySQL 查询的 WHERE 子句中使用列别名会产生错误

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

现在我也很困惑为什么它对我有用?

于 2014-01-20T06:39:57.950 回答
0

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

于 2014-01-20T02:49:12.113 回答
0

在您的评论中回答您的问题:

我正在尝试改变一点,但它没有任何建议???select * from (select col1 as 'my col' from tbl) temp where '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
于 2013-06-10T23:04:21.263 回答