gpt4 book ai didi

mysql - 将函数应用于别名字段

转载 作者:行者123 更新时间:2023-11-29 08:35:25 25 4
gpt4 key购买 nike

我有一个查询创建两个别名文件,如下所示:

 (CASE WHEN `venueID` > 0 THEN `venueLongitude` ELSE `specialLongitude` END) AS `longitude`
(CASE WHEN `venueID` > 0 THEN `venueLatitude` ELSE `specialLatitude` END) AS `latitude`

确定在某个查询中使用哪个经度和纬度(表中有许多 JOIN,但就本例而言,唯一的 JOIN 是从 Gigs 表执行 NATURAL LEFT JOIN 到表名为 Venues

该位工作正常并返回 field 坐标,我有兴趣进行距离计算,然后我可以根据它进行排序。

距离场如下所示:

((ACOS(SIN($lat * PI() / 180) * SIN(`latitude` * PI() / 180) + COS($lat * PI() / 180) * COS(`latitude` * PI() / 180) * COS(($lon - `longitude`) * PI() / 180)) * 180 / PI()) * 60 * 1.1515)

但是当我运行查询时,我收到错误 Unknown column 'latitude' in 'field list' 。有谁知道我如何执行这样的查找。

附注

虽然我知道我可以使用地理空间查询,但我想以稍后可用于进一步查询的方式知道答案,即

SELECT *,(CASE WHEN `a` > 0 THEN `a` ELSE `b` END) AS `x`,(`x` MOD 3) AS `y` FROM `Foo`

最佳答案

两种方法:

a) 将别名替换为 SQL

b) 将您的第一个查询封装为另一个查询,如下所示:

     SELECT 
t.latitude,
t.longitude,
((ACOS(SIN($lat * PI() / 180) * SIN(t.latitude * PI() / 180) + COS($lat * PI() / 180) * COS(latitude * PI() / 180) * COS(($lon - t.longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) as distance

FROM (
SELECT ((CASE WHEN `venueID` > 0 THEN `venueLongitude` ELSE `specialLongitude` END) AS `longitude`, (CASE WHEN `venueID` > 0 THEN `venueLatitude` ELSE `specialLatitude` END) AS `latitude` FROM Gigs left join Venues on ....
) as t

关于mysql - 将函数应用于别名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387177/

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