Mysql 将一个表转换为两个新表

Mysql 将一个表转换为两个新表,mysql,sql,select,export,Mysql,Sql,Select,Export,我正在尝试将数据从一个表移动到两个新表中,但我不确定如何以最好、最简单的方式实现这一点 我在时事通讯用户中有大约2000行,如下所示: userid company email memberofgroup field_member_uid field_user_id field_memberofgroup 在哪里 memberofgroup field_user_id 是一个整数,表示时事通讯\u邮件组。如果用户希望成为不同组的成员,这不是最好的方法。然后将有x行具有相同的电子邮件。2

我正在尝试将数据从一个表移动到两个新表中,但我不确定如何以最好、最简单的方式实现这一点

我在时事通讯用户中有大约2000行,如下所示:

userid company email memberofgroup
field_member_uid field_user_id field_memberofgroup
在哪里

memberofgroup 
field_user_id
是一个整数,表示时事通讯\u邮件组。如果用户希望成为不同组的成员,这不是最好的方法。然后将有x行具有相同的电子邮件。2000个用户x 3或4个不同的组(我想到了什么??),因此我制作了两个新表

时事通讯\u看起来像这样的成员

userid email company
和另一份表格新闻稿(来自"大学"组)的成员(如下图所示):

userid company email memberofgroup
field_member_uid field_user_id field_memberofgroup
在哪里

memberofgroup 
field_user_id
将包含来自时事通讯和会员的用户id

field_memberofgroup 
将包含电子邮件组id.f.x

field_user_id  field_memberofgroup 
    2                 6
    2                 4
    2                 8
    3                 1
    5                 6
我如何才能以最佳方式导出然后导入它们,以便电子邮件不会在时事通讯\ U成员中重复我可能需要手动检查哪些用户是多个邮件组的成员

邮件组表:

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表格
    通讯\U集团成员\U
脚本:

 CREATE TABLE newsletter_member_of_group(
  field_member_uid INT PRIMARY KEY AUTO_INCREMENT,
  field_user_id INT,
  field_memberofgroup INT
);
INSERT INTO newsletter_member_of_group
  SELECT NULL, userid, memberofgroup FROM newsletter_users;
ALTER TABLE newsletter_users RENAME TO newsletter_members;
ALTER TABLE newsletter_members DROP COLUMN memberofgroup;
请注意,字段\成员\ uid是自动递增的,它将帮助我们插入ID值

  • newsletter\u用户的数据复制到
    newsletter\u组成员的
脚本:

 CREATE TABLE newsletter_member_of_group(
  field_member_uid INT PRIMARY KEY AUTO_INCREMENT,
  field_user_id INT,
  field_memberofgroup INT
);
INSERT INTO newsletter_member_of_group
  SELECT NULL, userid, memberofgroup FROM newsletter_users;
ALTER TABLE newsletter_users RENAME TO newsletter_members;
ALTER TABLE newsletter_members DROP COLUMN memberofgroup;
  • 创建
    会员通讯
    表格。我们有两种变体:创建新表并复制数据,或者将
    newsletter\u用户
    重命名为
    newsletter\u成员
    并删除
    memberofgroup
    字段。我选择第二种变体
脚本:

 CREATE TABLE newsletter_member_of_group(
  field_member_uid INT PRIMARY KEY AUTO_INCREMENT,
  field_user_id INT,
  field_memberofgroup INT
);
INSERT INTO newsletter_member_of_group
  SELECT NULL, userid, memberofgroup FROM newsletter_users;
ALTER TABLE newsletter_users RENAME TO newsletter_members;
ALTER TABLE newsletter_members DROP COLUMN memberofgroup;

谢谢你!我没有想到仅仅改变现有的表!这样我会得到它完全一样!我正在重置ID并将其导入到新的memberofgroup表中!非常感谢。