将表拆分为两个连接表

时间:2012-01-26 18:10:15

标签: mysql database insert-into

现在我有一个带有表userphone(id, phone, type,userid)的mysql数据库,我想把它分成两个表,phone(id,phone,type)user_phone(id,user_id,phone_id)

我这样做是因为我还有其他东西也会引用电话号码,而且它们应该全部存储在一个表格中。 (例如,我还将添加company_phone(id,company_id,phone_id)联接表,以便通过电话号码加入公司。

有没有什么好的,有效的方法呢?我添加了新表,但我不确定填充它们的最佳方法。

我可以将userphone中的所有手机添加到phone表中,例如

INSERT INTO phone(phone,type) SELECT phone,type FROM userphone;

但是这不会为每部手机的新user_phone表添加一个条目。

有没有办法同时INSERT INTO两个不同的牌桌? (从研究中,我知道没有,但我无法弄清楚如何实现这一目标......)

提前致谢!

2 个答案:

答案 0 :(得分:2)

  1. 将表user_phone创建为

    insert into phone(phone,type,user_id)
    select phone,type,user_id from userphone
    
  2. 将表user_phone创建为

    insert into user_phone (user_id,phone_id)
    select user_id,id from phone
    
  3. alter table phone drop column user_id

答案 1 :(得分:0)

第一

插入手机(手机,类型)选择手机,输入FROM userphone;

第二

选择u.USER_ID,p.phone_ID 来自userPhone u INNER JOIN电话p     ON u.phone = p.phone     和u.type = p.type