我需要将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,但我不知道从哪里开始。
还有其他类似的问题,但他们没有回答我的问题。
答案 0 :(得分:1)
假设没有两个客户共享相同的f_name
和l_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);
假设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;
如果不同的客户可能共享相同的f_name
和l_name
但不是flat_table
中的每条记录都对应一个唯一的客户端,那么您需要找到一些方法来识别哪个记录与哪些客户对应。