两个表之间的update问题

buddhatarzan 2016-07-19 10:55:30
我有两个表
----------------------------
T1
PK1 FK Content1
1 11 aa
2 11 bb
3 11 cc
----------------------------
T2
PK2 FK Content2
4 11
5 11
6 11
两个表唯一的关系就是FK这一列的值相同(是另外一个表的关联), 我现在想把T1 的Content1数据逐行update到T2的Content2。怎么做?
我试过 update T2 set content2=content1 from T1,T2 where T1.FK=T2.FK, 但是结果是T2表的content2都是“aa”,没有“bb”和“cc”
...全文
141 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2016-07-19
  • 打赏
  • 举报
回复
;with cte as 
(
select a.content1 from 
(select row_number()order by getdate()) as id,* from t1) as a
inner join 
(select row_number()order by getdate()) as id,* from t2) as b
on 
a.id=b.id and a.FK=B.FK
)
update t2 set Content2=a.Content1 from cte as a inner join t2 as b on a.id=b.id and a.FK=B.FK
Ginnnnnnnn 2016-07-19
  • 打赏
  • 举报
回复
UPDATE a SET a.Content2 =b.Content1
	FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY FK ORDER BY PK2) AS RNr FROM T2 ) a
		INNER JOIN (SELECT *,ROW_NUMBER() OVER (PARTITION BY FK ORDER BY PK1) AS RNr FROM T1 ) b ON a.FK = b.FK AND a.RNr = b.RNr
还有一个问题,如果T2数据和T1 不一致怎么搞?
wwhtkill 2016-07-19
  • 打赏
  • 举报
回复

update T2 set Con=a.Con from (select *, row_number()over(partition by fk order by pk1) n from T1)a,
(select *, row_number()over(partition by fk order by pk2) n from T2)b where a.fk=b.fk and a.n=b.n
buddhatarzan 2016-07-19
  • 打赏
  • 举报
回复
引用 1 楼 wwhtkill 的回复:

update T2 set Con=a.Con from (select *, row_number()over(partition by fk order by pk1) n from T1)a,
(select *, row_number()over(partition by fk order by pk2) n from T2)b where a.fk=b.fk and a.n=b.n
多谢大神

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧