【发布时间】:2013-06-13 23:17:24
【问题描述】:
我有一个查询,可查找距离经纬度坐标对范围内的位置。这是一个填充了lat 和lng 值的示例:
SELECT
`id`,
( 3959 * acos( cos( radians('39.8657112') ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians('-86.1478729') ) + sin( radians('39.8657112') ) * sin( radians( `lat` ) ) ) ) AS `distance`
FROM `locations`
HAVING `distance` < 0.100000
我的问题是我想在复合查询中使用它来过滤另一个查询的结果。例如:
SELECT * FROM `tickets` WHERE `location_id` IN ( <distance query goes here> );
但是,由于距离查询返回两列(id 和 distance),第二个查询因基数违规而失败:ERROR 1241 (21000): Operand should contain 1 column(s)
有什么方法可以告诉 MySQL 不要从查询中返回 distance 列,以便只返回 ids 的列表?
【问题讨论】:
标签: mysql