2013-07-05 94 views
0

我有從excel導入到數據庫的以下記錄。記錄數是5,00,000。使用存儲過程更新更多記錄

EmpIdNameCityCityId

1RameshLA?

2KumarNewYork?

我需要從其他表中提取CityId和插入此CityId

其他表有城市和cityId

CityIdAliasName

1LA

1LosAngels

1Los Angels

1 0123別名

我想調用一個存儲過程來更新所有500000條記錄,因爲函數不能用於UPDATING記錄。

我需要CityId領域從別名表

+0

這是你必須定期或只執行一次操作?如果只有一次,你甚至不需要創建一個存儲過程,運行一次腳本就足夠了。 你使用什麼樣的數據庫? Sql Server? – ElDog

+0

您對效率的擔憂是什麼?你有什麼嘗試,爲什麼它不夠好?對我來說,這看起來像是兩個表格之間非常簡單的連接。 City/AliasName列上的索引幾乎肯定會有助於提升性能。 –

回答

1

每一個員工,你可以這樣做更新:

 update employee 
    set cityid = b.cityid 
    from employee as a inner join city as b on a.city = b.aliasname 
0

希望這有助於你出去。

UPDATE UserDetails 
SET UserDetails.CityID = City.ID 
FROM City 
WHERE City.AliasName = UserDetails.City 
0

City設置爲外鍵而不是添加冗餘數據列會不會更容易。

要回答您的問題,您可以通過運行以下查詢來實現此目的。如果需要偶爾運行,也可以將其設置爲存儲過程。

UPDATE Employees SET CityId = (Select CityId FROM Cities where AliasName = City) 
0

下面的查詢將更新所需的數據:

UPDATE Employees SET CityId = ISNULL((Select CityId FROM Cities where AliasName = City),0)