Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL for loop-插入具有相同数据、不同索引的多行_Mysql_Sql_For Loop - Fatal编程技术网

MySQL for loop-插入具有相同数据、不同索引的多行

MySQL for loop-插入具有相同数据、不同索引的多行,mysql,sql,for-loop,Mysql,Sql,For Loop,我正在寻找一个纯MySQL方法,将数百行插入数据库。我正在为一个具有粗略模式的应用程序进行翻译,如: Translations | site ID | translation ID | translation value | ------------------------------------------------ | ... | ... | ... | Sites | site ID | language code | ...

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

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, . . . );