作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在抓取距某个点一定距离的银行列表
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 个 field 。
目前的查询
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
按名称分组是行不通的,因为它计算的距离不在范围内。换句话说,如果在 700 m 之外有一个 id 较低的 ICBC,那么即使在 700 m 以内有两个 ICBC,ICBC 也不会出现在结果中。所以我怀疑发生这种情况是因为 group by
发生在 having
之前或者可能有不同的解决方案?
我无法将距离检查移动到 where,因为它不是真正的列 #1054 - 'where clause' 中的未知列 'distance'
最佳答案
将整个查询选择为一个表,然后对其进行分组。
例如
Select * FROM
(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) t
GROUP BY t.name
关于mysql - 如何确保 HAVING 发生在 GROUP BY 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019174/
我是一名优秀的程序员,十分优秀!