首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于子tbl数据的主tbl数据更新

基于子tbl数据的主tbl数据更新
EN

Stack Overflow用户
提问于 2014-06-13 10:52:14
回答 2查看 49关注 0票数 0

我有两张桌子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)。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-13 11:01:53

试试这个:

代码语言:javascript
复制
;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,然后执行两个连接-首先是基于EmpIdEmp和CTE之间的连接,然后是ChildID上的CTE和Child之间的连接,以从Child表中获取所需的记录。

票数 1
EN

Stack Overflow用户

发布于 2014-06-13 11:07:53

或者你可以使用:

代码语言:javascript
复制
;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表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24203623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档