2013-10-19 23 views
1

我有兩個表。 (在MySQL中)用mysql中的JOIN語句更新多行

表'categoryimport'包含本地語言的類別名稱。

ID  Category  ID_category 
1000001  Autoservisy NULL 
1000002  Autoservisy NULL 
1000002  Pneuservisy NULL 
1000003  Autoservisy NULL 
1000004  Autoservisy NULL 
1000005  Autoservisy NULL 

表'categorylang'也包含與其ID(ID_category字段)相同的本地語言的類別名稱。

ID_category  EN      CZ 
100    Garages    Autoservisy 
101    Car bodywork    Autoklempíři 
102    Motor-vehicle electrics Autoelektrikáři 
103    Car Dealers    Auto-moto prodejci 
110    Windscreen repair Opravy autoskel 
111    Tire service    Pneuservisy 

所有我需要做的是基於categoryimport.Category = categorylang.CZ 'categorylang' 表到其相應的ID_category表 'categoryimport' 我試着插入ID_category:

UPDATE categoryimport JOIN categorylang 
ON categoryimport.Category = categorylang.CZ SET categoryimport.ID_category = categorylang.ID_category 

結果是:

ID  Category  ID_category 
1000001  Autoservisy 100 
1000002  Autoservisy **NULL** 
1000002  Pneuservisy 111 
1000003  Autoservisy 100 
1000004  Autoservisy 100 
1000005  Autoservisy 100 

1000002的字段ID類別未更新。必須更新以及100的價值。只更新一個值1000002。

我需要以下結果:

ID  Category  ID_category 
1000001  Autoservisy 100 
1000002  Autoservisy **100** 
1000002  Pneuservisy 111 
1000003  Autoservisy 100 
1000004  Autoservisy 100 
1000005  Autoservisy 100 

使用遊標將有可能解決這個問題,但我更喜歡一些簡單的SQL語句。謝謝您的幫助。

+0

也許修剪類別列空間可能有問題。 – Mihai

回答

0

您的查詢似乎做工精細,請參閱本演示:http://www.sqlfiddle.com/#!2/f521f/2

這可能是因爲有在導入表的一些記錄空間,
看看這個紀錄在演示:

(9999999, ' Autoservisy', NULL) 


- 此記錄尚未被查詢更新。