mysql - 将一张表转换为两张新表

标签 mysql sql select export

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

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  

最佳答案

只需几个步骤即可解决:

  • Craetenewsletter_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/

相关文章:

mysql - 替换\' with '

mysql - 如何从下面的 MySQL 表中获取平均值 'rate'?

MySQL - SELECT ...(子查询)AS 字段名

javascript - 控制选择框的宽度

sql - INT PRIMARY KEY 和 INTEGER PRIMARY KEY SQLite 的区别

mysql - 如何通过命令行导出数据库?

mysql - 对于每一行进行更新

mysql - SQL 查询 - 如何找出哪些员工在多个商店工作

sql - Sqlite事务-储备锁何时生效

sql - 将一行转换为列数较少的多行