将新ID保存到旧表中

时间:2010-11-04 03:22:21

标签: sql mysql

我想从这些旧表中移动数据

restaurant_id | restaurant_nm | more data

bar_id | bar_nm | more data 

venue_id | venue_nm

我将字段venue_id添加到旧表中 然后我想运行类似这样的查询:

INSERT INTO `venue` (SELECT null, `restaurant_nm` FROM `restaurant`)

然而,在复制时我希望将新的id存储到旧表中。纯粹的mysql有可能吗?

编辑旧餐馆可以是连锁店(多个杂乱的乔),唯一能够100%识别他们的是id

1 个答案:

答案 0 :(得分:1)

您可以暂时将旧ID存储在新表中(在额外的列中),然后在旧表上执行UPDATE。这是两行“纯SQL”。

restaurant_id |restaurant_name | v_id

venue_id | venue_name | rest_id

INSERT INTO `venue` (SELECT null, `restaurant_nm`, `restaurant_id`  FROM `restaurant`)

然后

UPDATE restaurant r
INNER JOIN venue v
ON r.restaurant_id = v.rest_id
SET r.v_id = v.venue_id

有兴趣了解更优雅的解决方案。