0

我正在寻找一种将数百行插入数据库的纯 MySQL 方法。我正在为具有粗略架构的应用程序进行翻译,例如:

Translations
| site ID | translation ID | translation value |
------------------------------------------------
| ...     | ...            | ...               |

Sites
| site ID | language code | ... 
---------------------------------
| ...     | ...           | ... 

问题是我有数百种相同语言的翻译,其中表中的外键不是语言代码(我正在使用遗留系统,所以我无法更改它)。

无论如何我可以SET @keys = ("key1", "key2", ...)通过 INSERT 语句做一些事情并循环吗?

澄清:

我有一张桌子,上面有不同网站的翻译。新站点已添加到站点表中,我现在正在为这些站点添加翻译。

因为翻译表基于 site_id 而不是 language_code,所以我需要为多个站点添加相同的翻译。需要为几个不同的 site_id 插入大约 100 种翻译,这将在以后重复使用,因此手动进行是不切实际的。

4

1 回答 1

0

评论太长了,但我不明白这个问题。这听起来更像是一个update而不是一个insert

update translations
    set LanguageKey = <new language key>
    where TranslationID in (key1, key2, key3 . . .);

如果您尝试使用新键复制现有行,则可以使用insert . . . select

insert into translations(LanguageKey, TranslationValue)
    select <new language key>, TranslationValue
    from translations
    where TranslationId in (key1, key2, key3, . . . );

您的问题应该真正提供样本数据和期望的结果,以澄清(对其他人)您想要完成的事情。

于 2013-07-02T10:56:28.240 回答