我的表places
包含以下列:
| id | name | city | state | lon | lat
这些地点可以位于相同的城市。我正在尝试升级以下查询,以获取附近的独特城市:
SELECT
id,
city,
state,
(3959 * acos(
cos(radians(:lat))
* cos(radians(lat))
* cos(radians(lon) - radians(:lon))
+ sin(radians(:lat))
* sin(radians(lat))
)) AS distance
FROM contact_references
HAVING distance < 50
ORDER BY distance
LIMIT 0, 20;
Group By
引发以下错误:
[42000] [1055] SELECT列表的表达式#1不在GROUP BY子句中 并包含非聚合列
这需要更改sql_mode
。我无法在生产服务器上执行此操作(策略)。
我也不能使用DISTINCT
,因为距离不是唯一的。因此,这是我已经一周无法解决的复杂挑战。有没有人建议在哪里挖?