gpt4 book ai didi

mysql - 在使用 MySQL 计算的同一查询中按距离过滤?

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:57 24 4
gpt4 key购买 nike

我正在编写一个基于插件代码的 WordPress 插件 WP_GeoPosts .这会向查询添加几行,该查询收集要为页面显示的帖子,并根据到给定纬度/经度集的距离对它们进行排序。

我的补充是按距离过滤。 SELECT语句返回计算的距离。我需要比较 WHERE 中的距离声明。

下面是我为您格式化的 SQL。

错误行在WHERE的末尾声明,AND distance <= 25

Error: "Uknown column 'distance' in 'where clause'"

计算距离的正确方法是什么,但仍然在 SELECT 语句中返回它?

SELECT 
SQL_CALC_FOUND_ROWS wp_posts.*,
( 3959 * acos(
cos( radians(44.0519) ) *
cos( radians( latitude.meta_value ) ) *
cos( radians( longitude.meta_value ) - radians(-123.0867) ) +
sin( radians(44.0519) ) *
sin( radians( latitude.meta_value ) )
) ) AS distance,
latitude.meta_value AS latitude,
longitude.meta_value AS longitude

FROM wp_posts
INNER JOIN wp_postmeta AS latitude ON wp_posts.id = latitude.post_id
INNER JOIN wp_postmeta AS longitude ON wp_posts.id = longitude.post_id

WHERE 1 = 1
AND wp_posts.post_type = 'property'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
AND latitude.meta_key = "latitude"
AND longitude.meta_key = "longitude"
AND distance <= 25

ORDER BY distance ASC, wp_posts.post_date DESC

LIMIT 0, 10

最佳答案

您可以像这样使用内联 View :

SELECT CalculatedView.col1, etc... FROM
(
select
-- do your main query can calcs in here
) AS CalculatedView
WHERE CalculatedView.SomeColumn = 'SomeValue'

关于mysql - 在使用 MySQL 计算的同一查询中按距离过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com