根据另一个中的条件在表中插入新记录

时间:2013-07-29 14:40:16

标签: sql sql-server sql-server-2008 tsql

我搜索了一遍,然后想出一个空白。我试图更新一个记录,并根据另一个表中的条件将其他记录插入一个表中。两个表都有一个共同的RecordID(nvarchar,因为它们包含字符)。

最简单的解释用英语:

  • 如果记录ID1在ColumnA和ColumnB AND ColumnC中有值 表A
  • 然后,在TableB中,使用TableA.ColumnA
  • 中的值更新ColumnBla
  • 然后插入一条新记录,复制记录ID1中的所有字段, 再加上足够的'A'到RecordID
  • 然后,在此新记录中,使用来自的值更新CollumnBla TableA.ColumnB
  • 重复另一个来自TableA.ColumnC
  • 的值的新记录

还有其他条件,记录在ColumnA和ColumnB中有值但在ColumnC等中没有。在这种情况下,只需要添加一个新记录,但它们应该在洗涤中出现。

1 个答案:

答案 0 :(得分:1)

您可以使用insert with select query将值插入表中。

因此,您的方案的查询将如下所示。

     create table @RecordsUpdated(RecordID nvarchar(max))

     update t
     set ColumnBla = TableA.ColumnA
     output
         inserted.RecordID 
         into @RecordsUpdated
     from 
         TableB
         inner join TableA on TableB.RecordID = TableA.RecordID
     where
         TablesA.ColumnA is not null
         and TablesB.ColumnA is not null
         and TablesC.ColumnA is not null

     insert into TableB(RecordID, ColumnBLa)
     select TableA.RecordID + 'A', ColumnB
     from
       TableA
       inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID

     insert into TableB(RecordID, ColumnBLa)
     select TableA.RecordID + 'A', ColumnC
     from
       TableA
       inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID