2017-09-06 64 views
0

我有一個表:SQL如何使用新的唯一值替換數千唯一值的

key, value 
1, ... 
2, ... 
3, ... 

我現在需要更換幾千鍵

oldkey, newkey 
1, 4 
3, 7 

結果

key, value 
4, ... 
2, ... 
7, ... 

有沒有一種實用的方法來做到這一點,而沒有成千上萬的更新查詢? 會高性能嗎?

+0

任何舊值都會顯示爲新值嗎? – jarlh

+0

不,舊的和新的值都將是唯一的(它們實際上是哈希值) – Chris

回答

1

你可能需要內部聯接

SELECT b.newkey,a.value 
FROM OLDKEYS a INNER JOIN NEWKEYS b 
ON a.key = b.oldkey; 

如果有需要,你可以使用這個邏輯的更新以及

2

與內更新他們加入,如:

 UPDATE upd 
     SET upd.key = mapping_table.newkey 
     FROM table_to_update upd 
INNER JOIN mapping_table 
     ON upd.key = mapping_table.oldkey