问题
我在查询中使用备用列名(化名),我可以使用别名“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