Sql server 使用MS SQL处理记录后更新记录
我正在从具有IsMatch列的表中插入记录。我已经写了一个insert语句,但我遇到了一个小问题 我的insert记录仅从IsMatch=2的表中选择前1个 我需要在插入记录后更新该记录,以便IsMatch=3,从而不会再次选择该记录 代码如下:Sql server 使用MS SQL处理记录后更新记录,sql-server,Sql Server,我正在从具有IsMatch列的表中插入记录。我已经写了一个insert语句,但我遇到了一个小问题 我的insert记录仅从IsMatch=2的表中选择前1个 我需要在插入记录后更新该记录,以便IsMatch=3,从而不会再次选择该记录 代码如下: begin tran INSERT INTO [Contact]( [Company] , [Contact] , [Title] , [MailingAddress] , [MailingCity] , [MailingState]
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
试试这个
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
现在,您可以使用@testable中的PKID值来更新记录
SELECT*FROM@tentable
您能否发布INSERT
查询以及一些您遇到问题的示例数据?在插入过程中更改值?您没有在此处为任何人提供任何类型的详细信息,以使他们有更多的事情要做。如果您将相同的ORDER BY子句添加到insert和update中,它看起来应该可以工作。不要使用选择TOP 1
。如果多个线程同时执行该代码,则可能会更新错误的记录。相反,使用类似于中提到的方法,如果它是您刚才插入的同一条记录,有没有理由不能在插入中插入硬编码的“3”?(顺便说一句,如果格式化是一个问题,你不必包含整个语句。只需包含关键字段,即足以给出你所做工作的要点。)