多表连接后取分组中某个值为最大的一行

本文深入探讨了一种复杂的SQL查询,通过使用子查询找到每个员工的最高工资记录,然后通过LEFT JOIN与员工表进行连接,获取详细信息。此查询涉及分组聚合、子查询和多表连接,对于理解高级SQL操作具有指导意义。
摘要由CSDN通过智能技术生成
@Select("select DISTINCT b.*, a.sum " +
        "from (SELECT * FROM wage WHERE wid IN  " +
        "(SELECT MAX(wid) FROM wage GROUP BY sid)) a " +
        "left join (select * from staff) b on a.sid = b.sid")

先(SELECT MAX(wid) FROM wage GROUP BY sid)  将薪水表根据外键 员工id来分组 并且查出每个组中最大的值;

SELECT * FROM wage WHERE wid IN " + "(SELECT MAX(wid) FROM wage GROUP BY sid) 查出的结果后给wid进行比较 选择当前行

后面的就是join多表查询了

参考链接:

https://www.dazhuanlan.com/2019/12/23/5e002da115bb0/
https://www.jianshu.com/p/694fb2c75ecd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值