MySQL查询不太正确……可能很简单

| 我有一个薪资系统表,其中包含四个字段和一些示例数据:
pkref  employee_id  new_wage  effective_date
=====  ===========  ========  ==============
23     06031-BOB    10        080101
37     06031-BOB    15        090501
90     06031-BOB    13        110228 
当员工的工资发生变化时,主键参考会自动增加,并记录相应的信息(
effective_date
是时间戳,yymmdd)。那里没有问题。 现在,我正在尝试查询以查找 所有与员工相关的条目,然后 这些子条目中最多
effective_date
邮票 对应于该最大值的工资。 我已经完成了我的第一个子查询(!),它几乎正确,但是它有很多问题。某些大师可以看一下并给我一个正确的方向吗?
SELECT MAX(effective_date),new_wage FROM (SELECT effective_date,new_wage FROM hr_wages WHERE employee_code=\'06031-BOB\') AS t1
理想情况下,我希望退还
110228
13
。但是,正如前面提到的大师们无疑会立即看到的那样,出了点问题。
new_wage
的值并不总是与最大值
effective_date
匹配。 所以。增值税吗?     
已邀请:
        等等,是什么阻止您执行以下操作?
select effective_date, new_wage from hr_wages
where employee_code = \'06031-BOB\'
order by effective_date desc
limit 1
    
        您只能为一名员工使用IN和子查询
   SELECT new_wage, other data... 
    FROM hr_wages
    WHERE effective_date IN (SELECT max(effective_date) FROM hr_wages WHERE employee_code=\'06031-BOB\')
AND employee_code=\'06031-BOB\' -- Corrected: Credits to Stev
Ë 对于所有员工
SELECT new_wage, CO 
FROM hr_wages w LEFT JOIN
(SELECT max(effective_date) effective_date, employee_code 
FROM hr_wages 
GROUP BY employee_code
)d ON w.employee_code = d.employee.code AND w.effective_date = d.effective_date
    
        @niktrs上有一篇帖子提供了正确答案,但已被删除! 因此,这是我在@niktrs帮助下寻找的查询。如果他的帖子回来了,我会接受的。
SELECT new_wage FROM hr_wages WHERE effective_date IN 
(SELECT effective_date,new_wage FROM hr_wages  WHERE employee_code=\'06031-BOB\') 
AND employee_code=\'06031-BOB\'
我敢肯定,这种丑陋可以被美化。     

要回复问题请先登录注册