我的查询
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子句' "
答案 0 :(得分:0)
您不能在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;
答案 1 :(得分: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