2017-02-10 146 views
-2

我試圖搜索和搜索,但我找不到匹配的答案。
我需要更新數據庫中的300行,查詢似乎變得越來越長。我知道我可以做一個臨時表,但我卡住了。
下面更新多行SQL

ProductID | (Old)ArticleNumber | (New)ArticleNumber 
268687 |  EXRO300  |  5709070 
268702 |  EXS50030  |  1595831 
268728 |  EX62111  |  1562993 
268730 |  EXRT25  |  1009451 
268733 |  EX240220V  |  7800100 
268737 |  EX600   |  1875928 
..........|....................|................. 

然後像300行的表的一個例子。

所以,老articlenumber需要通過更換新的...

+2

我們如何知道什麼(新)ArticleNumbers更新到? – jarlh

+0

新的需要覆蓋舊的。所以EXRO300需要變成5709070.唯一的問題是我有300+:/ –

+1

但你怎麼知道新值? – jarlh

回答

0

如果你有New Article Nr在DB另一個表,通過ProductID加入,並設置他們喜歡:

UPDATE oldProductTbl 
SET oldProductTbl.ArticleNumber = newProductTbl.ArticleNumber 
FROM Products1 oldProductTbl 
    JOIN Product2 newProductTbl 
    ON oldProductTbl.ProductId = newProductTbl.ProductId 
0

使用此查詢更新臨時表中的數據

UPDATE 
    Table_A 
    SET 
    Table_A.(old)ArticleNumber = Table_A.(New)ArticleNumber, 
FROM 
    Some_Table AS Table_A 
0

我用新的文章編號和ProductID創建了一個新的臨時表。

CREATE TABLE #NewArticle(
ProductID int, 
ArticleNumber char(30)) 

然後,我用插入到表中填充它。

insert into #NewArticle(ProductID,NewArticle) 
VALUES ('268687'),('5709070'), 
('269364','HA61451CTH'), 
('269393','5665237'), 
........ 

然後這樣更新一切。

update tblProduct 
set NewArticle = #NewArticle.NewArticle 
from tblProduct 
inner join #NewArticle on tblproduct.ProductID = #NewArticle.ProductID 

不錯!非常感謝!