Advertisement

Mysql Where条件用列标称

阅读量:

在某些情况下,我们对查询结果进行处理后生成了新的列名,但希望在查询条件中引用该列别名,然而MySQL并不支持这种操作。

为何会出现这种限制?

据推测,MySQL之所以不允许将列别名用于查询条件,是因为该数据库系统中列的别名仅在最终结果返回时才会被展示,并不会在SQL语句解析阶段被识别和使用。

是否存在应对措施?

答案是肯定的!

可以通过在原始查询语句外部再嵌套一层SELECT语句来实现需求。

复制代码
 SELECT SS.* FROM (

    
 select s.*,(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(39.9148890000-s.lat)/360),2)+COS(PI()*39.9148890000/180)* COS(s.lat * PI()/180)*POW(SIN(PI()*(39.9148890000-s.lng)/360),2)))) as juli from vip_stores as s 
    
 )SS
    
 where SS.juli<5.0 order by S.juli asc limit 0,20
    
    
    
    

目前尚未发现更为优越的解决方案。

若有相关建议,敬请不吝赐教!

======================文档信息=

全部评论 (0)

还没有任何评论哟~