繁体   English   中英

如何在别名中添加where子句

[英]How to add a where clause in the alias

我的查询

select `id`, `name`, `bitrixid`, `pec_public_id`, `name` as `bitrixname`, `address`, `yandex_map`, `office`, `date_from`, `date_to`, `days`, `cities`,
  ( 6371 * acos( cos( radians(42.057669) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(48.288776) ) + sin( radians(42.057669) ) * sin( radians( lat ) ) ) )
    AS distance
from `a_delivery_pec_cities`
where `lat` is not null and `lon` is not null
      and name like '%Derbent%'
      and `active` = 1
order by `distance` asc
limit 1
offset 0

我必须添加别名距离<100的子句。

如果我尝试使用类似`的引用或不使用引用

distance <100

我收到一个错误““ where子句”中的未知列“距离””

您不能在MySQL的where子句中使用别名。

select `id`, `name`, `bitrixid`, `pec_public_id`, `name` as `bitrixname`, `address`, `yandex_map`, `office`, `date_from`, `date_to`, `days`, `cities`,
  ( 6371 * acos( cos( radians(42.057669) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(48.288776) ) + sin( radians(42.057669) ) * sin( radians( lat ) ) ) )
    AS distance
from `a_delivery_pec_cities`
where `lat` is not null and `lon` is not null
      and name like '%Derbent%'
      and `active` = 1
      and ( 6371 * acos( cos( radians(42.057669) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(48.288776) ) + sin( radians(42.057669) ) * sin( radians( lat ) ) ) )<100
order by `distance` asc
limit 1
offset 0;

您可以在语句末尾使用HAVING

select `id`, `name`, `bitrixid`, `pec_public_id`, `name` as `bitrixname`, `address`, `yandex_map`, `office`, `date_from`, `date_to`, `days`, `cities`,
  ( 6371 * acos( cos( radians(42.057669) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(48.288776) ) + sin( radians(42.057669) ) * sin( radians( lat ) ) ) )
    AS distance
from `a_delivery_pec_cities`
where `lat` is not null and `lon` is not null
      and name like '%Derbent%'
      and `active` = 1
having distance < 100
order by `distance` asc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM