我正在尝试编写一个脚本,它将修改从一个到一个的关系。一对多关系是一个带有主键的电话号码,可以多次由不同的表引用。
例如,假设我有一个本科生表和一个毕业生表,两个条目具有相同的数字。现在,他们将拥有相同的外键用于电话号码表。
我希望每当这些学生使用相同的外键ID时,在电话号码表中插入一个新行(具有相同的数据),并更新其中一个学生行以指向新插入的电话号码行
我有下面显示的插入和更新语句,我基本上需要找到一种方法将两者结合起来。
INSERT INTO phone_number (id, phone_number)
SELECT null, pn.number
FROM phone_number pn
WHERE pn.id in
(
SELECT underp.phone_id
FROM
(
undergraduate_phone underp
INNER JOIN graduate_phone gradp ON underp.phone_id = gradp.phone_id
)
)
UPDATE graduate_phone
SET graduate_phone.phone_id = LAST_INSERT_ID()
我现在显然无法工作,因为insert语句只复制了本地和grads使用的phone_number中的所有行,而update语句只获取最后插入的id。想法?