我正在尝试将数据从一个表移动到两个新表中,但我不确定如何以最好、最简单的方式做到这一点。
newsletter_users 中有大约 2000 行,如下所示:
userid company email memberofgroup
哪里
memberofgroup
是一个整数,引用 newsletter_mailgroups。如果用户想成为不同组的成员,这不是最好的方法。那么将会有 x 行具有相同的电子邮件。 2000 个用户 x 3 或 4 个不同的组(我想到了什么?)因此我制作了两个新表
newsletter_members 看起来像这样
userid email company
另一个表 newsletter_member_of_group 如下所示:
field_member_uid field_user_id field_memberofgroup
哪里
field_user_id
将包含来自 newsletter_members 的用户 ID 和
field_memberofgroup
将包含电子邮件组 ID。 f.x.
field_user_id field_memberofgroup
2 6
2 4
2 8
3 1
5 6
如何以最佳方式导出然后导入它们,以便电子邮件不会在 newsletter_members 中重复? - 我可能需要进行手动检查以查看哪些用户是多个邮件组的成员。
邮件组表:
1 Forhandlere
2 Arkitekter og byggerådgivere
3 Typehusfabrikanter
4 Byggeentreprenører
5 Murermestre
6 Tømrermestre
7 Tagdækkere
8 Boligforeninger/Ejendomsselskaber
9 Bygge-interesserede
10 Tyske modtagere
11 Landskabsarkitekter
12 Norske arkitekter
13 Svenske arkitekter
14 Norske forhandlere
15 Svenske forhandlere
16 Brancherelaterede
17 Svenske ansatte
18 Norske ansatte
19 Beijer Sverige
最佳答案
只需几个步骤即可解决:
- Craete 表
newsletter_member_of_group
。
脚本:
CREATE TABLE newsletter_member_of_group(
field_member_uid INT PRIMARY KEY AUTO_INCREMENT,
field_user_id INT,
field_memberofgroup INT
);
注意field_member_uid是AUTO_INCRMENT,它将帮助我们插入ID值。
- 将数据从
newsletter_users
复制到newsletter_member_of_group
。
脚本:
INSERT INTO newsletter_member_of_group
SELECT NULL, userid, memberofgroup FROM newsletter_users;
- 创建
newsletter_members
表。我们有两种变体:创建新表并复制数据,或者将newsletter_users
重命名为newsletter_members
并删除memberofgroup
字段。我选择第二种。
脚本:
ALTER TABLE newsletter_users RENAME TO newsletter_members;
ALTER TABLE newsletter_members DROP COLUMN memberofgroup;
关于mysql - 将一张表转换为两张新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13194000/