2013-05-30 68 views
3

我写以下在MySQL查询,但它返回0行别名在where子句中的MySQL

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

,但下面的查询返回4行

select col1 as mycol from tbl where col1 = 5 

什么是错的第一个查询?

+5

这些查询看起来与我相当。你能在[sqlfiddle](http://sqlfiddle.com)上重现这种行为吗? – Andomar

+3

@Andomar - [我无法重现](http://www.sqlfiddle.com/#!2/d7940/2) –

+0

你在哪里运行你的SQL ..在PHP中还是直接在DB中? –

回答

0

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

我试图用变化不大,但它不工作的任何suggesion ??? SELECT * FROM(选择COL1从TBL '我山坳')temp其中 'temp.my山坳'= 5 - 曼迪普·辛格5月30日7:48

您在这里的问题是MySQL正在寻找一个名为“temp.my关口”,但你真正想要的东西列在表中temp称为my col列所以,你需要这样做:

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

如果你想引用一个别名(在MySQL)你需要使用HAVING而不是WHERE。您的第二行可以正常工作,因为您使用的是而非指的是别名,但第一条语句失败,因为您的引用了WHERE的别名。