2013-06-03 87 views
0

爲什麼這個查詢:未知列誤差在WHERE子句

SELECT SQL_CALC_FOUND_ROWS,a.*,(SELECT cy.iso_code 
           FROM ps_address AS addr, ps_country AS cy 
           WHERE addr.id_customer=a.id_customer 
           AND addr.id_country=cy.id_country) iso_code 
FROM `ps_customer` a       
WHERE iso_code='IT'       
ORDER BY a.`id_customer` ASC 
LIMIT 0,50 

返回我:#1054 - Unknown column 'iso_code' in 'where clause'?

回答

0

看起來像iso_code列來自ps_address表,它只在您主查詢的選擇列表(ps_customer)內的子查詢上下文中可用。

除此之外,由於您已經限制子查詢中的iso_code值,所以在主查詢中不需要此WHERE語句。刪除它,它應該沒問題。

+0

這也是我的第一個建議,但它是'(SELECT ...)iso_code' – WiiMaxx

0

上面的SQL不會起作用,因爲在執行下列順序

FROM 
WHERE 
GROUP BY 
HAVING 
SELECT 
ORDER BY 

使別名列將被指定爲在執行第二最後一步,並且WHERE發生之前啓動。所以SQL引擎永遠不會知道iso_code在這裏。

希望這會有所幫助。

相關問題