gpt4 book ai didi

mysql - 使用 WHERE 时从多个匹配中选择第一个结果

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

在使用 MySQL 根据邮政编码、经度和纬度执行区域搜索时,我遇到了一个“问题”。但一个国家/地区内存在重复的邮政编码

我当前正在执行第一个查询,以检查多个结果并选择第一个结果(因为它们的距离差异非常小)。但我想在一个查询中完成它。

有没有办法在使用 WHERE 时忽略多个匹配或简单地选择第一个

这是我到目前为止所拥有的:

SELECT
u.name,
dest.zc_zip,
dest.zc_location_name,
ACOS(
SIN(RADIANS(src.zc_lat)) * SIN(RADIANS(dest.zc_lat))
+ COS(RADIANS(src.zc_lat)) * COS(RADIANS(dest.zc_lat))
* COS(RADIANS(src.zc_lon) - RADIANS(dest.zc_lon))
) * 6380 AS distance
FROM zip_coordinates dest
CROSS JOIN zip_coordinates src
CROSS JOIN users u
WHERE src.zc_id = 2 /* searching for id */
AND u.zip = dest.zc_zip
AND u.city = dest.zc_location_name
HAVING distance < 100
ORDER BY distance;

这里我想将src.zc_id = 2更改为src.zc_zip = XXXX

编辑:

我还创建了一个sql fiddle :http://sqlfiddle.com/#!2/5fb6a/3

最佳答案

如果我正确理解你的问题,你想替换

WHERE src.zc_id = 2/* 搜索 id */

类似这样的行:

WHERE src.zc_id = (SELECT ... FROM zip_coordinates where ...)

并且您希望 WHERE 子句的结果是单个值。在这种情况下,您可以只使用 MAX 函数。类似于:

WHERE src.zc_id = (SELECT MAX(zc_id) FROM zip_coordinates where ...)

如果您在此 SELECT 查询之前提供有关正在运行的查询的更多信息以选择结果之一,将会很有帮助。

关于mysql - 使用 WHERE 时从多个匹配中选择第一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18065457/

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