如何解决返回具有最新日期的行
我的数据看起来像这样,
employeeSalaryId employeeId title value currency effectiveFrom
10 1000 Salary 22750.00 USD 2021-01-01
4 1000 Salary 19500.00 USD 2020-09-23
我想根据最新的effectiveFrom 日期返回记录。因此,对于上述员工 ID 1000 的示例数据,第一行将是所需的结果。
SELECT
`es`.`employeeSalaryId`,`es`.`employeeId`,`es`.`totalSalary`,`es`.`currency`,MAX(DATE(`es`.`effectiveFrom`)) AS `MAXeffectiveFrom`
FROM
`Employee_Salary` `es`
WHERE
`es`.`employeeId` = 1000;
我得到的结果不正确,
employeeSalaryId employeeId totalSalary currency MAXeffectiveFrom
4 1000 19500.00 USD 2021-01-01
日期正确,但显示的 totalSalary 和 employeeSalaryId 值是针对 2020 年 9 月 23 日的。
想要的结果是,
employeeSalaryId employeeId title value currency effectiveFrom
10 1000 Salary 22750.00 USD 2021-01-01
解决方法
您正在做的是从整个“effectiveForm”列中选择员工数据和最大日期。这意味着该日期被分配给每一行。如果要获取最新日期的行,则应按日期降序排序并选择第一条记录。
SELECT
`es`.`employeeSalaryId`,`es`.`employeeId`,`es`.`totalSalary`,`es`.`currency`,`es`.`effectiveFrom`
FROM
`tempSalary` `es`
WHERE
`es`.`employeeId` = 1000
ORDER BY DATE(`es`.`effectiveFrom`) DESC
LIMIT 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。