使用mysql中的JOIN语句更新多行

时间:2013-10-19 17:02:59

标签: mysql

我有两张桌子。 (在MySQL中)

表'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

我需要做的就是将'categorylang'表中的ID_category插入到基于categoryimport.Category = categorylang.CZ的表'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

使用CURSORS可以解决问题,但我更喜欢一些简单的SQL语句。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的查询似乎工作正常,请参阅此演示:http://www.sqlfiddle.com/#!2/f521f/2

可能是导入表的某些记录中有空格,
在演示中查看此记录:

(9999999, ' Autoservisy', NULL)


- 查询未更新此记录。