gpt4 book ai didi

MySQL聚合函数查找最接近的值

转载 作者:行者123 更新时间:2023-11-29 07:23:40 26 4
gpt4 key购买 nike

在MySQL中,是否有任何聚合函数(或任何其他方法)来查找与特定值最接近的值?

例如,我正在查找门牌号为 15 的地址。或者,当某些街道没有 15 号门牌时,应返回最接近的门牌号(例如 14 或 16):

SELECT closest(house_no, 15), street_name
FROM addresses
GROUP BY street_name

由于需要聚合,我看不到任何可用于获取单个结果的 ORDER BY ABS(house_no - 15) LIMIT 1 的帮助。

最佳答案

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(street VARCHAR(12) NOT NULL
,house_no INT NOT NULL
,PRIMARY KEY(street,house_no)
);


INSERT INTO my_table VALUES
('street_1',11),
('street_1',12),
('street_1',13),
('street_1',14),
('street_2',12),
('street_2',13),
('street_2',14),
('street_2',15),
('street_3',13),
('street_3',14),
('street_3',16),
('street_4',16),
('street_4',17),
('street_4',18),
('street_4',19);

SELECT x.*
FROM my_table x
JOIN
( SELECT street, MIN(ABS(house_no-15)) best_match FROM my_table GROUP BY street) y
ON y.street = x.street
AND y.best_match = ABS(x.house_no-15);
+----------+----------+
| street | house_no |
+----------+----------+
| street_1 | 14 |
| street_2 | 15 |
| street_3 | 14 |
| street_3 | 16 |
| street_4 | 16 |
+----------+----------+

关于MySQL聚合函数查找最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228835/

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