我写以下在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
什么是错的第一个查询?
我写以下在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
什么是错的第一个查询?
在回答您的评论你的问题:
我试图用变化不大,但它不工作的任何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
如果你想引用一个别名(在MySQL)你需要使用HAVING而不是WHERE。您的第二行可以正常工作,因为您使用的是而非指的是别名,但第一条语句失败,因为您的是引用了WHERE的别名。
它在我的最后工作正常。但我搜索自己的问题,并得到这个线索:
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
现在我也困惑,为什么我的作品?
这些查询看起来与我相当。你能在[sqlfiddle](http://sqlfiddle.com)上重现这种行为吗? – Andomar
@Andomar - [我无法重现](http://www.sqlfiddle.com/#!2/d7940/2) –
你在哪里运行你的SQL ..在PHP中还是直接在DB中? –