SQL Insert select依赖于其他表

时间:2018-07-16 08:05:49

标签: mysql sql

我目前有两个数据库表

  
      
  • 客户      
        
    • id
    •   
    • 名称
    •   
    • 电子邮件
    •   
    • reseller_id
    •   
  •   
  • 经销商      
        
    • id
    •   
    • 名称
    •   
    • 电子邮件
    •   
  •   

我想将它们迁移到新的用户表:

  
      
  • 用户

         
        
    • id
    •   
    • 名称
    •   
    • 电子邮件
    •   
    • 类型(类型= 1是客户,类型2 =转售商)
    •   
  •   
  • customer_reseller

         
        
    • customer_id
    •   
    • reseller_id
    •   
  •   

我想通过mysql查询进行迁移。这是我到目前为止的内容:

INSERT INTO customer_reseller (customer_id, reseller_id) 
    SELECT 
        (SELECT id FROM users WHERE type = 1) AS customer_id, 
        (SELECT ??) AS reseller_id'
    );

我如何获取reseller_id并确保它对应于正确的客户?

1 个答案:

答案 0 :(得分:1)

说明:您正在做的是使用联结表将客户与代理商之间的关系更改为多对多,而不是一对多。在这种情况下,您将允许一个客户关联多个经销商。


您需要来自customers的迁移前数据,才能知道哪个客户与哪个代理商相关联,因此这是从一个表中进行简单查询就可以迁移所有关联。

INSERT INTO customer_reseller (customer_id, reseller_id)
  SELECT DISTINCT id, reseller_id
  FROM customers

请注意,使用DISTINCT仅选择唯一的对(如果您没有受到约束的约束,那么在此之前,最好把它放入)。