有两张表。tblpool主表,tbltemp副表。
临时表的数据都是从主表拿的拿了之后需要对主表的状态栏改成USED。两表结构不完全相同只有拿主表的数据几个列一致,怎么做到根据副表几个列更新主表的状态栏。
select a.* from tblpool a, tbtemp b where (a.id1 = b.id1 or a.id2 = b.id2 or a.id3 = b.id3 or a.id4 = b.id4 or a.id5 = b.id5) and b.guid = 'cb52da92-38c1-4ce9-95ab-a9d2065adb79'
or的原因是因为每一列都不一定有值,有可能是只有id1有值,或者id2又或者全部都有
update tblpool tb set tb.xxx = 'USED'
where 1=1
and exists (
select 1 from tbtemp tbt
where 1=1
and (tb.id1 = tbt.id1
or tb.id2 = tbt.id2
or tb.id3 = tbt.id3
or tb.id4 = tbt.id4
or tb.id5 = tbt.id5)
and tbt.guid = 'cb52da92-38c1-4ce9-95ab-a9d2065adb79'
)
merge into