-1

I need to insert data from a flat_table into two tables 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
    ...
    ...

I was thinking of using mysql_last_id somehow but I don't know even where to start.

there are other questions like this but they don't answer my question.

4

1 回答 1

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对应一个唯一的客户端,则您需要找到某种方法来识别哪些记录对应于哪些客户端。

于 2012-12-26T18:51:40.353 回答