我正在获取与某个点有一定距离的银行列表
ICBC 6805 119.86727673154
Bank of Shanghai 7693 372.999006839511
Bank of Ningbo 7626 379.19406334356
ICBC 6790 399.580754911156
Minsheng Bank 8102 485.904900718796
Standard Chartered Bank 8205 551.038506011767
Guangdong Development Bank 8048 563.713291030103
Bank of Shanghai 7688 575.327270234431
Bank of Nanjing 7622 622.249663674778
但是我只想抓住每个连锁店的 1 个场地。
到目前为止的查询
SELECT name, id , (
GLength( LineStringFromWKB( LineString( `lnglat` , POINT( 121.437478728836, 31.182877821277 ) ) ) )
) *95000 AS `distance`
FROM `banks`
WHERE (
lnglat != ""
)
AND (
published =1
)
HAVING (
distance <700
)
ORDER BY `distance` ASC
按名称使用组不起作用,因为它评估然后距离不落入范围。换句话说,如果有一个 ICBC 超过 700 m 并且具有较低的 id,那么即使两个 ICBC 在 700 m 以内,ICBC 也不会出现在结果中。所以我怀疑这是因为group by
发生在之前having
或者可能有不同的解决方案?
我无法将距离检查移动到 where 因为它不是真正的列#1054 - Unknown column 'distance' in 'where clause'