如何批量编辑和替换MySQL数据库行,使用列表替换所有?

时间:2013-04-18 01:02:50

标签: mysql

所以我在我的数据库表中已经有230个国家的名单,在“国家”行中名为“countrylist”。除了“国家”行之外,我还有“代码”行,其中包含该国家/地区的国家/地区代码。

这些国家/地区都是英文版,因为我还需要其他3种语言的国家/地区名称,我也会为其他3种语言复制表格。我还编写了PHP代码,根据语言选择合适的表格。

我已准备好其他3种语言的国家/地区名称列表,它们具有相同的顺序。

但是......这让我有230个国家用3种语言取代,而且我已经知道的东西浪费了很多时间,应该比基本的复制粘贴简单得多。虽然我甚至不知道如何或如果能做到这一点......

我想知道是否有办法保留表中的“代码”行,并用查询/命令替换“country”行中的所有国家/地区?

谢谢,非常感谢任何帮助

4 个答案:

答案 0 :(得分:1)

INSERT INTO countries_fr (code) SELECT countries_en.code FROM countries_en

假设您有表countries_fr和countries_en,并且两者都有code列。 这会将countries_en表中的所有code插入countries_fr表的代码中。

答案 1 :(得分:0)

您创建关系模型。

country (id, name)
countryLang (countryId, lang, translatedName)

这样,语言与您的父国名无关。

| ID |   NAME | COUNTRYID | LANG | TRANSLATEDNAME |
---------------------------------------------------
|  1 | Poland |         1 |   en |         Poland |
|  1 | Poland |         1 |   pl |         Polska |

See a demo

答案 2 :(得分:0)

所以它已经规范化了,你必须为表中的其他3个名称添加列,所以(用所需的语言替换语言):

alter table countries add french varchar(45),spanish varchar(45),russian varchar(45);

由于代码完全相同,因此您可以像关键字段一样使用它。

update countries c set c.french=(select country from french where french.code = countries.code),
c.spanish=(select country from spanish where spanish.code = countries.code),
c.russian=(select country from russian where russian.code = countries.code);

另一方面......

如果您只是替换国家/地区名称,则必须维护4组代码。

update countries set country=(select country from language2 where language2.code=countries.code);

答案 3 :(得分:0)

由于之前代码的性质,所有答案都不实用,因此我不得不使用Dreamweaver复制和替换手动重做所有内容。花了一个小时,但它做得很好。