gpt4 book ai didi

mysql如何通过group by和左连接获得第二高的值(value)

转载 作者:可可西里 更新时间:2023-11-01 08:18:20 24 4
gpt4 key购买 nike

(select id from owner where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')) as a
left join (select owner_id,max(nb) as maxbid from auction group by owner_id) as b on a.id=b.owner_id
left join (select owner_id,max(mb) as maxautobid from auction group by owner_id) as c on a.id=c.owner_id

对于第二个左连接语句,我能够获得最高的 mb 值。有人可以帮我添加第三个左连接语句,以便我可以获得第二高的 mb 值吗??

最佳答案

首先,您根本不需要第三次连接。您可以在一次连接中进行计算:

from (select id
from owner
where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
) as a left join
(select owner_id, max(nb) as maxbid, max(mb) as maxautobi
from auction
group by owner_id
) b
on a.id=b.owner_id;

获取 mb 的第二大值然后使用一个技巧,涉及 substring_index()group_concat():

   from (select id
from owner
where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
) as a left join
(select owner_id, max(nb) as maxbid, max(mb) as maxautobi,
substring_index(substring_index(group_concat(mb order by mb desc), ',', 2), ',', -1
) as second_mb
from auction
group by owner_id
) b
on a.id=b.owner_id;

想法是将值连接在一起,按 mb 排序。然后取列表的第二个元素。一个缺点是该值会转换为字符串,即使它以数字开头也是如此。

关于mysql如何通过group by和左连接获得第二高的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765752/

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