mysql如何通过group by和在左联接中获得第二高的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql如何通过group by和在左联接中获得第二高的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1258字,纯文字阅读大概需要2分钟。
内容图文
![mysql如何通过group by和在左联接中获得第二高的值](/upload/InfoBanner/zyjiaocheng/881/8c2dd91175da4521865adf38275db841.jpg)
(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来获得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和在左联接中获得第二高的值全部内容,希望文章能够帮你解决mysql如何通过group by和在左联接中获得第二高的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。