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
您正在做的是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;
我的数据是这样的,
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
您正在做的是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;