mysql如何通过group by和在左连接中获得第二高的值
对于第二个左join语句,我能够获得最高的mb值。有人能帮我添加第三个左join语句,这样我就可以获得第二高的mb值吗?首先,你根本不需要第三个join语句。您可以在一个联接中进行计算:mysql如何通过group by和在左连接中获得第二高的值,mysql,greatest-n-per-group,Mysql,Greatest N Per Group,对于第二个左join语句,我能够获得最高的mb值。有人能帮我添加第三个左join语句,这样我就可以获得第二高的mb值吗?首先,你根本不需要第三个join语句。您可以在一个联接中进行计算: (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(
(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
获取第二大值,然后使用一个技巧,包括子字符串_index()
和组_concat()
:
其思想是将这些值连接在一起,按
mb
排序。然后取列表中的第二个元素。其中一个缺点是,即使当它作为一个数字开始时,它也被转换为字符串。当你询问SQL查询问题时,请考虑提供基于它的样本数据和期望输出。它可以帮助你更快更准确地得到答案。
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;
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;