2013-10-19 24 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) 


- 此记录尚未被查询更新。