問題
我在查詢中使用備用列名(化名),我可以使用別名「GIVEN_NAME」作爲ORDER BY的一部分,但是無法使用它作爲其一部分WHERE子句。該WHERE「GIVEN_NAME」傳遞作爲我的控制的請求的結果,我不知道應該在WHERE條件下使用實際的列名。列別名WHERE子句
問題
- 這有什麼辦法/破解一個WHERE子句中使用列別名?
- 有沒有辦法找到一個別名列名?
研究
一些研究它看起來像別名是在WHERE子句後添加後後。
例
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1
WHERE given_name LIKE 'levi%'
ORDER BY given_name DESC LIMIT 0 , 25
謝謝,很好的解釋。然而,兩種解決方案都可以在對一張大桌子進行基準測試之後,視圖解決方案提供更好的性能 – 2012-03-12 10:12:35
我懷疑可能是這樣,因爲這將只需要對視圖做充分的select語句一次,然後可以緩存和索引,以備日後調用(不知道這個細節是如何工作的)。我預計表現會稍好單指原始列名,而不是對付視圖中的所有在一起的,但是希望不是這麼大的差別。 – 2012-03-12 10:20:55