如何在别名中添加where子句

时间:2018-02-21 11:37:00

标签: mysql

我的查询

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子句' "

2 个答案:

答案 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