代码之家  ›  专栏  ›  技术社区  ›  Moak

将新ID保存到旧表中

  •  0
  • Moak  · 技术社区  · 15 年前

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

    restaurant_id | restaurant_nm | more data
    
    bar_id | bar_nm | more data 
    

    venue_id | venue_nm
    

    我会在旧桌子上加上场地ID
    然后我要运行类似于以下内容的查询:

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

    但是,在复制时,我希望新的id存储到旧表中。纯mysql可以做到这一点吗?

    编辑 旧餐馆可以是连锁店(多家脏乱不堪的Joe's),唯一能100%识别它们的就是身份证

    1 回复  |  直到 15 年前
        1
  •  1
  •   LesterDove    15 年前

    您可以临时将旧id存储在新表中(在额外的列中),然后对旧表进行更新。这是两行“纯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
    

    有兴趣看看有什么更优雅的解决方案。