我从具有列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
答案 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