日期:2014-05-16  浏览次数:20947 次

Access 多条记录顺序更新问题
有两张表,一张表叫wage,用来记录所有员工的所有历史工资和最新工资记录(包括先前所有旧的和现在新的),子窗体内以ID降序排序;另一张表叫new_wage,只用来记录当前最新的工资记录。
现在,需要以工号为依据,对new_wage表的记录进行更新。也就是说,要将wage表内的多条记录更新到new_wage表内的单条记录上。语句如下:
DoCmd.RunSQL   ( "UPDATE   wage   INNER   JOIN   new_wage   ON   wage.工号   =   new_wage.工号   SET   new_wage.职称类别   =   [wage].[职称类别],   new_wage.任职年限   =   [wage].[任职年限],   new_wage.套改年限   =   [wage].[套改年限],   new_wage.薪级   =   [wage].[薪级],   new_wage.岗位工资   =   [wage].[岗位工资],   new_wage.薪级工资   =   [wage].[薪级工资],   new_wage.工资   =   [wage].[工资],   new_wage.年度   =   [wage].[年度]   WHERE   [new_wage].[工号]= ' "   &   工号   &   " '; ")


问题是,测试了前7条记录,前3条记录能顺利更新,并将wage表中最后一条记录(也就是最新工资)更新到new_wage表中[子窗体内,将wage表记录按照ID降序排列]。但是,后四条记录更新后,却将第一条记录(最早的工资记录)更新到new_wage表中。

请问为什么?如何解决?谢谢!

------解决方案--------------------
1
select * from tt a where id=(select top 1 id from tt
where a.工号=工号 order by id desc)
2
select a.* from tt a inner join
(select 工号,max(id) as ma from tt group by 工号) b
on a.id=id
我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html