MySQL for loop-插入具有相同数据、不同索引的多行
我正在寻找一个纯MySQL方法,将数百行插入数据库。我正在为一个具有粗略模式的应用程序进行翻译,如:MySQL for loop-插入具有相同数据、不同索引的多行,mysql,sql,for-loop,Mysql,Sql,For Loop,我正在寻找一个纯MySQL方法,将数百行插入数据库。我正在为一个具有粗略模式的应用程序进行翻译,如: Translations | site ID | translation ID | translation value | ------------------------------------------------ | ... | ... | ... | Sites | site ID | language code | ...
Translations
| site ID | translation ID | translation value |
------------------------------------------------
| ... | ... | ... |
Sites
| site ID | language code | ...
---------------------------------
| ... | ... | ...
问题是,我有几百种相同语言的翻译,表中的外键不是语言代码(我使用的是一个遗留系统,因此无法更改)
我是否可以按照SET@keys=(“key1”、“key2”和…)
的思路做一些事情,并循环执行INSERT语句
澄清:
我有一个不同网站的翻译表。新站点已经添加到sites表中,我现在正在添加这些站点的翻译
因为翻译表基于站点id而不是语言代码,所以我需要为几个站点添加相同的翻译。有大约100个翻译需要为几个不同的站点ID插入,这将被进一步重用,因此手动执行是不切实际的。这对于评论来说太长了,但我不理解这个问题。这听起来更像是
更新
,而不是插入
:
update translations
set LanguageKey = <new language key>
where TranslationID in (key1, key2, key3 . . .);
您的问题应该提供示例数据和所需结果,以便(为其他人)澄清您想要完成的任务。创建一个带有键的临时表,然后加入该表?它不是更新,肯定是插入,因为它是新数据。但由于我可以更改DB模式的结构,所以重复了这个过程。我已经更新了主要问题clarification@MattLicense . . . 第二种方法解决了问题吗?
insert into translations(LanguageKey, TranslationValue)
select <new language key>, TranslationValue
from translations
where TranslationId in (key1, key2, key3, . . . );