mysql geocode_mysql-SQL语法错误-Haversine公式

我正在尝试使用Haversine formula从WordPress数据库达到get nearest places

我的表结构如下

帖子

+--------------+

| Field |

+--------------+

| ID |

| post_author |

| post_title |

| post_type |

+--------------+

后元

+--------------+

| Field |

+--------------+

| meta_id |

| post_id |

| meta_key |

| meta_value |

+--------------+

并具有meta_key值纬度和经度的记录

SELECT p.ID,

p.post_title,

p.post_author,

max(case when pm.meta_key='latitude' then pm.meta_value end) latitude,

max(case when pm.meta_key='longitude' then pm.meta_value end) longitude

FROM `wp_posts` p

LEFT JOIN `wp_postmeta` pm

on p.ID=pm.post_id

WHERE p.post_type='place'

AND (pm.meta_key='latitude' OR pm.meta_key='longitude')

GROUP BY p.ID, p.post_title, p.post_author

ORDER BY p.ID ASC

SELECT item1, item2,

( 3959 * acos( cos( radians(37) )

* cos( radians( lat ) )

* cos( radians( lng )

- radians(-122) )

+ sin( radians(37) )

* sin( radians( lat ) )

)

) AS distance

FROM geocodeTable

HAVING distance < 25

ORDER BY distance LIMIT 0 , 20;

下面是通过组合查询

SELECT ID,

post_title,

post_author,

max(case when meta_key='latitude' then meta_value end) latitude,

max(case when meta_key='longitude' then meta_value end) longitude,

( 3959 * acos( cos( radians(18.204540500000) )

* cos( radians( latitude ) )

* cos( radians( longitude )

- radians(-66.450958500000) )

+ sin( radians(18.204540500000 )

* sin( radians( latitude ) )

)

) AS distance

FROM `wp_posts`

LEFT JOIN `wp_postmeta`

on ID=post_id

WHERE post_type='place'

AND (meta_key='latitude' OR meta_key='longitude')

GROUP BY ID, post_title, post_author

ORDER BY ID ASC

但这会产生语法错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS distance FROM `wp_posts` LEFT JOIN `wp_postmeta` on ID=post_id WHERE po' at line 13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值