将列从一个数据库复制到另一个数据库并插入数据取决于SQL Server中的条件

时间:2014-09-09 13:56:36

标签: sql sql-server

我在同一个SQL服务器上有两个数据库。第一个名为Aa,带有一个表模型,其中有两列:Id和Desc以及Bb数据库,其中有一个表ListOfModels,其中有三列:Id,MachineTypeId,ModelName。我需要将Aa数据库中的所有Desc值复制到Bb中的ModelName中,如果Desc以" K"开头,则将1插入MachineTypeId,否则插入2。

你能帮我写一下这个剧本吗?

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