我有两张桌子tblEMP和tblChild。
在tblEMP中,我有两列Empid和salary,在tblEMP中,工资值当前为null。在tblChild中,我有三个专栏-- Childid,Empid和salary。空号是来自tblEMP的。
如下图所示,我有数据

。
现在,我想用匹配的EMPID从tblEMP的工资中更新tblChild的工资。
例如,tblEMP : EMPID 1的薪水是: 2500 (tblChild ChildId 3)和
EMPID 2的工资为: 500 (tblChild ChildId 4),EMPID 3的工资为4000 (tblChild ChildId 6)。
谢谢
发布于 2014-06-13 11:01:53
试试这个:
;with cte as
(select empid,max(childid) maxid
from child
group by empid)
update emp
set salary = c.salary
from
emp e
inner join cte t on e.empid = t.empid
inner join child c on t.maxid = c.childid基本上,您为每个ChildID获取最大的EmpID,然后执行两个连接-首先是基于EmpId的Emp和CTE之间的连接,然后是ChildID上的CTE和Child之间的连接,以从Child表中获取所需的记录。
发布于 2014-06-13 11:07:53
或者你可以使用:
;with cte
as
(
select childid, empid, salary,
row_number() over(partition by empid order by empid, childid desc) rno
from child
)
update emp
set salary = cte.salary
from cte
where cte.empid = temp.empid
and cte.rno = 1基于empid的行编号和更改employee表
https://stackoverflow.com/questions/24203623
复制相似问题