Return 具有最新日期的行

Return row with the latest date

我的数据是这样的,

  employeeSalaryId  employeeId  title   value       currency    effectiveFrom
       10            1000      Salary   22750.00     USD            2021-01-01
       4             1000      Salary   19500.00     USD            2020-09-23

我想 return 记录基于最近的 effectiveFrom 日期。因此,对于上述 employeeId 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-09-23。

期望的结果是,

employeeSalaryId  employeeId  title   value       currency    effectiveFrom
       10            1000      Salary   22750.00     USD            2021-01-01

dbfiddle

您正在做的是select从整个“effectiveForm”列中提取员工数据和最大日期。这意味着为每一行分配了该日期。如果你想获得最新日期的行,你应该按日期降序排序,select 第一条记录。

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;