我想使用mysql将表中的值复制到另一个表,同时遍历第三个表以在第二个表中设置特定值。

表1称为国家/地区,具有以下结构和数据:

国家
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++
+国家/地区ID +国家/地区名称+国家/地区_iso_code_2 +国家/地区_iso_code_3 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++
+1 +比利时+ BE + BEL +
+ 2 +荷兰+ NL + NLD +
+ 3 +德国+ DE + DEU +
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++


需要将country_id和countries_name行复制到表countries_name中。对于表语言中的每种language_id。
表2

country_name
+++++++++++++++++++++++++++++++++++++++++++++++++
+国家/地区ID +语言ID +国家/地区名称+
+++++++++++++++++++++++++++++++++++++++++++++++++
+1 + 1 +比利时+
+ 2 + 1 +荷兰+
+ 3 + 1 +德国+
+ 1 + 3 +比利时+
+ 2 + 3 +荷兰+
+ 3 + 3 +德国+
+1 + 4 +比利时+
+ 2 + 4 +荷兰+
+ 3 + 4 +德国+
+++++++++++++++++++++++++++++++++++++++++++++++++


表3

语言
+++++++++++++++++++++++++++++++++++
+语言_id +名称+代码+
+++++++++++++++++++++++++++++++++++
+1 +英文+ zh +
+ 3 +荷兰+ nl +
+ 4 +德语+ de +
+++++++++++++++++++++++++++++++++++


我知道如何单次通过,但不多次。

CREATE TABLE countries_name (

countries_id int(11) NOT NULL,

language_id int(11) NOT NULL DEFAULT 1,

countries_name varchar(64) NOT NULL,

UNIQUE countries (countries_id, language_id),

KEY idx_countries_name_zen (countries_name)

) ENGINE=MyISAM;

INSERT INTO countries_name (countries_id, countries_name)

SELECT c.countries_id, c.countries_name

FROM countries c;

最佳答案

http://sqlfiddle.com/#!9/bd3c7/1

如果我正确地确定了您的目标:

INSERT INTO countries_name (countries_id, language_id, countries_name)
SELECT
c.countries_id,
l.languages_id,
c.countries_name
FROM countries c
LEFT JOIN languages l
ON 1;

08-18 14:36
查看更多