我正在尝试从薪水表中获取最新月份的薪水,其中每个月在薪水表中输入多个employeeID
Posted
技术标签:
【中文标题】我正在尝试从薪水表中获取最新月份的薪水,其中每个月在薪水表中输入多个employeeID【英文标题】:I am trying to get latest month salary from salary table, where multiple entry of employeeID in salary table for each month 【发布时间】:2018-02-13 04:37:08 【问题描述】:员工表" empno, 姓名, sal_id, emp_id, 薪水, 月份
工资表:
sal_id, emp_id, 薪水, 月份
我正在尝试查询从员工表中获取所有员工 + 在salary表中,emp_id有多个条目(可能没有)。
我想要最新工资(或上个月工资)的员工名单
我目前的查询是:
SELECT * FROM emp
LEFT JOIN salary
ON emp.empno
= salary.emp_id
GROUP BY empno
ORDER BY salary.sal_id
DESC
但是我得到的是第一份薪水的员工名单,我想要最新的薪水。
帮帮我:( Emploee table Salary table
【问题讨论】:
请勿将屏幕截图作为附件发布。不要懒得在问题中添加相关代码。 您的订单错误,请尝试使用日期或其他内容 【参考方案1】:您是按sal_id
订购的,而不是您可能希望按salary
中代表其月份的字段订购。
【讨论】:
@SRDepp 这可能是因为您似乎将月份存储为字符串。这样,您将只有字母顺序。你应该在你的数据库中使用日期类型。【参考方案2】:SELECT emp.empno, emp.name, (
SELECT sal
FROM salary
WHERE salary.empno = emp.empno
ORDER BY salary.sal_id DESC LIMIT 1
)
FROM emp
【讨论】:
谢谢,但我希望在单个查询中没有嵌套查询 感谢您抽出宝贵时间提供答案。正是因为像您这样乐于助人的同龄人,我们才能作为一个社区一起学习。以下是一些关于如何使您的答案出色的提示:How do I write a good answer。【参考方案3】:经过大量的研发和谷歌搜索,我找到了解决方案。 单个查询是不可能的,我们必须应用2个查询
SELECT * FROM emp LEFT JOIN salary ON salary.emp_id=emp.empno WHERE salary.sal_id IN ( SELECT MAX(salary.sal_id) FROM salary GROUP BY salary.emp_id ) GROUP BY salary.sal_id ORDER BY salary.sal_id DESC
【讨论】:
以上是关于我正在尝试从薪水表中获取最新月份的薪水,其中每个月在薪水表中输入多个employeeID的主要内容,如果未能解决你的问题,请参考以下文章