MySQL中的別名使得查詢語句變得簡便,但是有時也會遇到別名限制的問題。
SELECT t1.name AS cityname, t2.name AS countryname FROM city AS t1, country AS t2 WHERE t1.countrycode = t2.code
在上面的查詢語句中,我們給city和country表都起了別名t1和t2,這樣查詢結果中返回的字段名就用cityname和countryname代替了原來的name。但是,如果我們想對結果中的cityname再次取別名,就會遇到問題。
SELECT t1.name AS cityname, t2.name AS countryname, cityname AS cname FROM city AS t1, country AS t2 WHERE t1.countrycode = t2.code
上面的查詢語句中,我們希望將cityname再次取一個別名cname,但是執行時會提示“Unknown column 'cityname' in 'field list'”錯誤。這是因為別名是在查詢語句運行時才起作用,而查詢語句的字段列表是在執行前就確定的,所以不能直接使用別名。
解決這個問題的方法是使用內部查詢,例如:
SELECT cityname, countryname, cityname AS cname FROM ( SELECT t1.name AS cityname, t2.name AS countryname FROM city AS t1, country AS t2 WHERE t1.countrycode = t2.code ) AS result
在內部查詢中使用別名,然后在外部查詢中使用這些別名來進行進一步的操作。