2013-05-30 104 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的別名。