gpt4 book ai didi

mysql - 如何在 MYSQL 查询中使用 AND KEYWORD 实现 HAVING 子句

转载 作者:行者123 更新时间:2023-11-29 20:51:26 24 4
gpt4 key购买 nike

我正在制作一个应用程序,将元素从一个地方运送到另一个地方。数据库保存发送位置或地址(以及发送纬度和经度)和接收地址或位置(以及目的地纬度和经度)。

我正在制作一个搜索应用程序,它将接收类似的数据

  1. sending_latitude $Flat
  2. Sending_longitude $Flon
  3. Destination_latitude $Tlat
  4. Destination_longitude $Tlon
  5. From_date $日期
  6. 半径$r

然后它将搜索项目列表以查找给定地理位置的指定半径参数内且日期与 from_date 匹配的点的位置。

我的查询:

SELECT *, (
6371 *
acos(
cos( radians( $Flat ) ) *
cos( radians( `sending_from_latitude` ) ) *
cos(
radians( `sending_from_longitude` ) - radians( $Flon )
) +
sin(radians($Flat)) *
sin(radians(`sending_from_latitude`))
)
) `senddistance`, (
6371 *
acos(
cos( radians( $Tlat ) ) *
cos( radians( `sending_to_latitude` ) ) *
cos(
radians( `sending_to_longitude` ) - radians( $Tlon )
) +
sin(radians($Tlat)) *
sin(radians(`sending_to_latitude`))
)
) `todistance`
FROM `items` as Item
HAVING (`senddistance` < $rad AND `todistance` < $rad)
ORDER BY `senddistance`

正如预期的那样,它工作得很好。但是,我想在条件中添加另一个条件AND from_date = $date

所以我这样写了查询:

修改后的查询:

SELECT *, (
6371 *
acos(
cos( radians( $Flat ) ) *
cos( radians( `sending_from_latitude` ) ) *
cos(
radians( `sending_from_longitude` ) - radians( $Flon )
) +
sin(radians($Flat)) *
sin(radians(`sending_from_latitude`))
)
) `senddistance`, (
6371 *
acos(
cos( radians( $Tlat ) ) *
cos( radians( `sending_to_latitude` ) ) *
cos(
radians( `sending_to_longitude` ) - radians( $Tlon )
) +
sin(radians($Tlat)) *
sin(radians(`sending_to_latitude`))
)
) `todistance`
FROM `items` as Item
WHERE from_date = $date
HAVING (`senddistance` < $rad AND `todistance` < $rad)
ORDER BY `senddistance`

它只是简单地返回空结果。

我做错了什么?

最佳答案

您是否尝试过将 HAVING 替换为 WHERE

  • HAVING通常用于在应用GROUP BY后进行过滤
  • WHERE在分组之前过滤结果

关于mysql - 如何在 MYSQL 查询中使用 AND KEYWORD 实现 HAVING 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011571/

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