mysql - 同一查询的 where 子句中的别名值

标签 mysql codeigniter

我想得到我们在同一个查询中获取的 distance >=distance_filter 的结果

SELECT SQL_CALC_FOUND_ROWS null as row, distance_filter, j.lat, j.long, ROUND((((acos(sin((28.53551600*pi()/180)) * sin((j.lat*pi()/180)) + cos((28.53551600*pi()/180)) * cos((j.lat*pi()/180)) * cos(((77.39102600 - j.long) * pi()/180))))*180/pi())*60*1.1515*1.609344 )) as distance, j.job_id, j.brand, j.location, j.model, j.creation_time
FROM `mb_job` as `j`
JOIN `mb_job_issue` as `ji` ON `j`.`job_id`=`ji`.`job_id`
WHERE `j`.`creation_time` >= '2017-05-18 09:39:43'
AND `j`.`status` = '1'
AND `j`.`job_id` NOT IN('')
GROUP BY `j`.`job_id`
HAVING `distance` <= 'DISTANCE_FILTER'
ORDER BY `j`.`job_id` DESC
 LIMIT 10

提前感谢任何指导

最佳答案

您只需要将 having 子句放在单引号内。这个查询在我这边运行良好

SELECT SQL_CALC_FOUND_ROWS null as row, distance_filter, j.lat, j.long, ROUND((((acos(sin((28.53551600*pi()/180)) * sin((j.lat*pi()/180)) + cos((28.53551600*pi()/180)) * cos((j.lat*pi()/180)) * cos(((77.39102600 - j.long) * pi()/180))))*180/pi())*60*1.1515*1.609344 )) as distance, j.job_id, j.brand, j.location, j.model, j.creation_time
FROM `mb_job` as `j`
JOIN `mb_job_issue` as `ji` ON `j`.`job_id`=`ji`.`job_id`
WHERE `j`.`creation_time` >= '2017-05-18 09:39:43'
AND `j`.`status` = '1'
AND `j`.`job_id` NOT IN('')
GROUP BY `j`.`job_id`
HAVING 'distance <= distance_filter'
ORDER BY `j`.`job_id` DESC
 LIMIT 10

希望对你有帮助

关于mysql - 同一查询的 where 子句中的别名值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066607/

相关文章:

mysql - 选择与组合关联的所有数据

php - 将大型 PHP 网站迁移到 WordPress

codeigniter - 如何使用 CodeIgniter 将表情符号插入 MySQL

php - json_encode() PHP 的不同结果

php - 一个用户有多张卡(php、mysql)

java - MySQL 连接未关闭

mysql - 如何在表中为所有具有相同名称的记录设置相同的列ID号

mysql - 一个持久的临时表?

mysql - 带有聚合函数 MAX 的 Codeigniter Active Record HAVING 子句

php - 简单 URL 路由不适用于 CodeIgniter