A表
字段 A1,A2,A3,A4,A5,A6B表
字段 B1,B2,B3,B4,B5,B6当B表的 B6小于10 时 用A表里的 A1与A2数据(且A5不等于1)替换B表里 B1和B2(且B5不等于1),且将A表里A5字段和B表里B5字段值都修改为1,让其不参与下次更新A表和B表可能同时达到条件的有多行数据,我希望是顺序替换,当然还有一个A表和B表达到条件记录数不同,这个希望以最小的一个表的记录数为准
字段 A1,A2,A3,A4,A5,A6B表
字段 B1,B2,B3,B4,B5,B6当B表的 B6小于10 时 用A表里的 A1与A2数据(且A5不等于1)替换B表里 B1和B2(且B5不等于1),且将A表里A5字段和B表里B5字段值都修改为1,让其不参与下次更新A表和B表可能同时达到条件的有多行数据,我希望是顺序替换,当然还有一个A表和B表达到条件记录数不同,这个希望以最小的一个表的记录数为准
as
set nocount onupdate B
set B1=A1,B2=A2,B5=1
FROM B
INNER JOIN (SELECT * FROM (select *,rn=ROW_NUMBER() OVER(PARTITION BY A1+A2 ORDER BY A1+A2) FROM A)T WHERE RN=1)A ON A.id=B.id
where B6<10 and A.A5<>1 and B.B5<>1
update A
set A5=1
FROM B
INNER JOIN A ON A.id=B.id
where B6<10 and A.A5<>1 and B.B5=1GO还有,A表和B表它们之间是否是父子表关系?什么情况下存在一对多
as
set nocount on update B
set B1=t.A1,B2=t.A2,B5=1
from B
inner join
(select B.主键,a.A1,a.A2
from (select *,rn=ROW_NUMBER() OVER(ORDER BY 主键) from A where A5<>1)a
inner join (select *,rn=ROW_NUMBER() OVER(ORDER BY 主键) from B where B5<>1 and B6<10)b
on a.rn=b.rn
)t on B.主键=t.主键
update A
set A5=1
from A
inner join
(select A.主键
from (select *,rn=ROW_NUMBER() OVER(ORDER BY 主键) from A where A5<>1)a
inner join (select *,rn=ROW_NUMBER() OVER(ORDER BY 主键) from B where B5<>1 and B6<10)b
on a.rn=b.rn
)t on B.主键=t.主键go