我有一个查询,可以找到纬度/经度坐标对距离内的位置。这是一个填充了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
查询中返回列,以便只id
返回一个 s 列表?