gpt4 book ai didi

mysql - 如何使用具有最小字段值的分组来选择行?

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

今天我发布了一个问题并得到了很好的答案:Stuck in building mysql query .

我虽然它对我有帮助,但我发现它返回了错误的数据。所以我在这里重新发布这个问题,附上我收到的答案,同时我也会解释这个问题为什么它对我不起作用。

数据示例:

id | item_id | user_id | bid_price
----------------------------------
1 | 1 | 11 | 1
2 | 1 | 12 | 2
3 | 1 | 13 | 3
4 | 1 | 14 | 1
5 | 1 | 15 | 4
6 | 2 | 16 | 2
7 | 2 | 17 | 1
8 | 3 | 18 | 2
9 | 3 | 19 | 3
10 | 3 | 18 | 2

预期结果:

id | item_id | user_id | bid_price
----------------------------------
1 | 1 | 11 | 1
7 | 2 | 17 | 1
8 | 3 | 18 | 2

提供的解决方案:

select m.id, m.item_id, m.user_id, m.bid_price
from my_table m
inner join (
select item_id, min(id) min_id, min(bid_price) min_price
from my_table
where item_id IN (1,2,3)
group by item_id
) t on t.item_id = m.item_id
and t.min_price= m.bid_price
and t.min_id = m.id

问题:在子查询中,最小 ID 是在整个 group by (item_id) 语句中选择的,并且不会根据最小 bid_price 反射(reflect)。换句话说,最小 id 的选择根本不依赖于价格字段。因此,在结果中我将获得该组的最低价格和最小 id,但这不会是同一行!该 ID 可以与具有另一个 bet_price 值的行相关联。

如何调整此查询?预先感谢您!

最佳答案

SELECT min(m.id) AS  id, m.item_id, m.user_id, m.bid_price
FROM my_table m
INNER JOIN (
SELECT item_id, min(bid_price) AS min_price
FROM my_table
GROUP BY item_id
) t ON t.item_id = m.item_id
AND t.min_price= m.bid_price
GROUP BY item_id

输出

id  item_id user_id bid_price
1 1 11 1
7 2 17 1
8 3 18 2

现场演示

http://sqlfiddle.com/#!9/a52dc6/13

关于mysql - 如何使用具有最小字段值的分组来选择行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491911/

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