从另一个表更新前50行

时间:2014-04-14 08:47:53

标签: sql tsql variables

如何从表中获取前50行并将其更新到另一个表中,其中ID(行)可能不存在于第二个表中,以及更新'表?

前50名我指的是已经不在CycleCount表中的50个位置(asc),一些背景:我想在CycleCount表中存储50个位置(每次更新)。存在的所有位置都填充在表Warehouse中。每次,我都想在仓库中添加50个新位置到Cyclecount,但更新后的位置需要按升序排列(仓库位置)

我尝试过使用UPDATE TOP(50)Table1 SET ...等但在这种情况下不起作用。

我有这段代码,但这会更新所有位置(行)而不是前50个(新)位置:

DECLARE @N INT 
SET @N = 50
UPDATE CycleCount
SET MagLoc   = items.UserField_06, 
    Itemcode = items.ItemCode,
    CCDate   = GETDATE()
FROM Warehouse LEFT OUTER JOIN items ON Warehouse.Location = items.UserField_06
WHERE WareHouse.Location NOT IN (select MagLoc from CycleCount) 
GO

1 个答案:

答案 0 :(得分:2)

您可以使用WITH关键字:

;WITH query
AS (
    SELECT TOP 50 *
    FROM [Your Query]
)
UPDATE query
SET MagLoc   = items.UserField_06, 
    Itemcode = items.ItemCode,
    CCDate   = GETDATE()