使用MS SQL处理记录后更新记录

时间:2015-01-19 15:46:47

标签: sql-server

我从具有列IsMatch的表中插入记录。我写了一个插入语句,但是我遇到了一些问题。

我的插入记录仅选择表中IsMatch = 2的前1位。

我需要在插入后更新记录,以便IsMatch = 3,因此不会再次选择它。

以下是代码:

begin tran

INSERT INTO [Contact](
 [Company]
 , [Contact]
 , [Title]
 , [MailingAddress]
 , [MailingCity]
 , [MailingState]
 , [MailingZip]
 , [ShippingAddress]
 , [ShippingCity]
 , [ShippingState]
 , [ShippingZip]
 , [Phone]
 , [SIC]
 , [EmpSize]
 , [LockedBy]
 , [LastUpdated]
 , [Source]
 , [CreateDate]
 , [ContactCategory]
 , [ContactGroup]
 , FirstName
 , LastName
 , Mar
 , website
)
SELECT top 1 
   company
   , firstname+ ' ' + lastName as contact
   , contactTitle as title
   , address as mailingaddress
   , city as mailingcity
   , state as mailingstate
   , zip as mailingzip
   , locationaddress as shippingaddress
   , locationcity as shippingcity
   , locationstate as shippingstate
   , locationzip as shippingzip
   , phone
   , primarysic as sic
   , employeeSizeRange as empsize
   , 0 as lockedby
   , '2015-01-19' as lastUpdated
   , 'InfoUSA20141231' as source
   , getdate() as createdate
   , 'Cellular Telephones-Service & Repair' as contactCategory
   , 'InfoUsa' as ContactGroup
   , lastName
   , firstname
   , 'PB-NewWireless' as Mar
   , website
FROM  tmp_WirelessRepairListDec2014 
WHERE isMatch = 2

UPDATE tmp_WirelessRepairListDec2014 
SET    isMatch = 3 
WHERE  id in (
       SELECT top 1 id 
       FROM   tmp_WirelessRepairListDec2014 
       WHERE isMatch = 2
)

commit tran

1 个答案:

答案 0 :(得分:2)

试试这个

DECLARE @tempTable as TABLE 
( 
    pkid bigint null
)

INSERT INTO TABLENAME
(
    COL1,
    COL2,
    COL3
)

OUTPUT INSERTED.pkid
INTO @tempTable 
SELECT COL1,COL2,COL3
FROM TABLENAME_2

现在,您可以使用@tempTable中的PKID值来更新记录

SELECT * FROM @tempTable