gpt4 book ai didi

mysql - 使用多个 MySQL 连接每个获取多个值

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

我有一个表“rate”,其中包含列“id”、“location”、“local_rate”、“long_rate”。Id 是用于区分客户端的整数值。结果按位置分组。每个位置组都有来自每个客户端的条目。每个客户端都有不同的 local_rate 和 long_rate。我需要得到的是位置、最低的 local_rate 和具有该速率的客户端,以及最低的 long_rate 和具有该速率的客户端。表格中的每个位置都有一行。如果一个费率有多个匹配结果,它应该只选择一个并返回值和具有该值的客户端 ID。

结果将显示为:

location1 | id(min_local_rate) | min_local_rate | id(min_long_rate) | min_long_rate
location2 | id(min_local_rate) | min_local_rate | id(min_long_rate) | min_long_rate
....

到目前为止,这是我的查询:

SELECT local.location, local.id, local.local_rate, long.id, long.long_rate
FROM
(SELECT MIN(local_rate), location, id FROM rate GROUP BY location) local
JOIN
(SELECT MIN(long_rate), location, id FROM rate GROUP BY location) long
ON local.location = long.location
GROUP BY local.location;

我得到的是每一行中相同的本地客户端 ID 和每一行中相同的长客户端 ID。位置、本地费率和长期费率是正确的。

最佳答案

首先,您可以在一个子查询中计算每个位置的最低和最高本地费率。然后,您可以连接回原始数据以获取客户端 ID。

如果只有一个客户端具有最小值/最大值,那么下面应该做你想做的:

select l.location, l.minlr, rmin.id, l.maxlr, rmax.id
from (select location, min(local_rate) as minlr, max(local_rate) as maxlr
from rate r
group by location
) l join
rate rmin
on rmin.location = l.location and rmin.local_rate = l.minlr join
rate rmax
on rmax.location = l.location and rmax.local_rate = l.maxlr;

如果有多行匹配,这将为每个位置生成多行。你的问题没有具体说明在这种情况下该怎么做。

关于mysql - 使用多个 MySQL 连接每个获取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695179/

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