如何插入具有相同自动增量id的两个表

时间:2012-12-26 18:47:26

标签: mysql database

我需要将flat_table中的数据插入两个表client_data client_contact。

flat_table
    f_name
    l_name
    client_id
    phone
    address

client_data
    id AI
    f_name
    l_name
    ...
    ... 

client_contact
    client_id
    phone
    address
    ...
    ...

我想以某种方式使用mysql_last_id,但我不知道从哪里开始。

还有其他类似的问题,但他们没有回答我的问题。

1 个答案:

答案 0 :(得分:1)

  1. 假设没有两个客户共享相同的f_namel_name

    INSERT INTO client_data (f_name, l_name)
      SELECT DISTINCT f_name, l_name
      FROM   flat_table;
    
    INSERT INTO client_contact (client_id, phone, address)
      SELECT d.id, f.phone, f.address
      FROM   flat_table f JOIN client_data d USING (f_name, l_name);
    
  2. 假设flat_table中的所有记录都对应不同的客户端:

    CREATE TEMPORARY TABLE flat_table2 (
      id SERIAL
    ) SELECT * FROM flat_table;
    
    INSERT INTO client_data (id, f_name, l_name)
      SELECT DISTINCT id, f_name, l_name
      FROM   flat_table2;
    
    INSERT INTO client_contact (client_id, phone, address)
      SELECT id, phone, address
      FROM   flat_table2;
    
    DROP TEMPORARY TABLE flat_table2;
    
  3. 如果不同的客户可能共享相同的f_namel_name但不是flat_table中的每条记录都对应一个唯一的客户端,那么您需要找到一些方法来识别哪个记录与哪些客户对应。