我在同一个SQL服务器上有两个数据库。第一个名为Aa,带有一个表模型,其中有两列:Id和Desc以及Bb数据库,其中有一个表ListOfModels,其中有三列:Id,MachineTypeId,ModelName。我需要将Aa数据库中的所有Desc值复制到Bb中的ModelName中,如果Desc以" K"开头,则将1插入MachineTypeId,否则插入2。
你能帮我写一下这个剧本吗?
答案 0 :(得分:2)
关于是否要在表中插入新行或只更新匹配值,问题尚不清楚。
如果您确实想插入记录:
insert into bb..ListOfModels(MachineTypeId, ModelName)
select (case when TypeId like 'K%' then 1 else 2 end), m.[desc]
from aa..Models m;
如果您想根据id
的匹配更新记录:
update lom
set ModelName = [desc],
MachineTypeId = (case when m.TypeId like 'K%' then 1 else 2 end)
from bb..ListOfModels lom join
aa..Models m
on lom.id = m.id;
顺便说一下,desc
是一个糟糕的列名,因为它是SQL中的保留字。
答案 1 :(得分:1)
使用案例陈述:http://msdn.microsoft.com/en-us/library/ms181765.aspx
Case Substr(MachineTypeID,1,1) When "K" Then 1 Else 2 End