我遇到了一个问题,我无法想出解决问题的方法。 我需要将几种语言的国家/地区名称插入到我的mysql数据库的表中。 我找到了这些链接link1(en),link2(de)等但我不知道如何继续以便最终得到一个如下表:
CREATE TABLE `country` (
`id` varchar(2) NOT NULL,
`en` varchar(64) NOT NULL,
`de` varchar(64) NOT NULL,
...
...
PRIMARY KEY (`id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;
答案 0 :(得分:1)
好吧,我终于明白了,所以我发帖可能会帮助其他人。
我创建了2个表(country_en)和(country_de),然后运行以下语句:
DROP table if exists `countries`;
CREATE TABLE `countries` (
id varchar(2), el varchar(100), de varchar(100)
);
INSERT INTO `countries`
SELECT country_en.id, el, de
FROM country_en
JOIN country_de ON (country_en.id = country_de.id);
创建表countries
并在其公共密钥id
上加入其他2个表
答案 1 :(得分:0)
我可以建议你另一个桌子设计。创建languages
表,并修改一个小country
表:添加lang_id
字段并创建外键 - FOREIGN KEY(lang_id)
参考语言(id)。然后填充languages
和country
表。
例如:
CREATE TABLE languages(
id VARCHAR(2) NOT NULL,
name VARCHAR(64) NOT NULL,
PRIMARY KEY (id)
) ENGINE = INNODB;
CREATE TABLE country(
id VARCHAR(2) NOT NULL,
lang_id VARCHAR(2) NOT NULL DEFAULT '',
name VARCHAR(64) NOT NULL,
PRIMARY KEY (id, lang_id),
CONSTRAINT FK_country_languages_id FOREIGN KEY (lang_id)
REFERENCES languages (id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE = INNODB;
-- Populate languages
INSERT INTO languages VALUES
('en', 'English'),
('de', 'German');
-- Populate names from 'en' table
INSERT INTO country SELECT id, 'en', name FROM country_en;
-- Populate names from 'de' table
INSERT INTO country SELECT id, 'de', name FROM country_de;
...其中country_en
和country_de
是您链接中的表格。