【问题标题】:Insert from another database with select option and where both database table id's equal使用选择选项从另一个数据库插入,并且两个数据库表 id 相等
【发布时间】:2019-01-28 07:07:29
【问题描述】:

我正在尝试从旧数据库中插入表数据。 ID 在数据库表和选择特定列中都相等。这是我的数据库。

旧数据库:sch -> 旧表:产品

(id, tag, url) 
(13, red, aaa.html)
(14, red, bbb.html)
...
(100, red, zzz.html)

新数据库:orgin -> 新表:用户

(url, oldid) 
(null, 13)
(null, 14)
...
(null, 100)

旧数据库表中有 135 个标签相同的值,旧 id 插入到新数据库表中。我想从旧数据库表中插入所有 url,标签列为“red”,旧数据库表“id”等于新数据库表“oldid”。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您似乎正在寻找JOINed 更新:

    UPDATE orgin.user u
    INNER JOIN sch.product p ON p.tag = 'red' AND p.id = u.oldid
    SET u.url = p.url
    

    此查询将用红色的tag 拉出表product 中存在oldid 的每个用户,并将其url 设置为product 中的相应值。

    【讨论】:

    • 感谢您的回答,但我收到一个错误“#1146 - 'user.user' 不存在”有什么问题吗?有两个不同的数据库及其表。
    • @Emre :好的,旧数据库/表和新数据库/表的名称是什么?基本上你应该用old_database.product替换product,用user替换new_database.user
    • 我编辑了我的帖子。有数据库和表名。
    • 感谢您的编辑,但没有错误并且影响行 '0'。所以没有数据更新到 orgin 数据库的用户表。编辑:对不起,伙计,我又试了一次,效果很好:)非常感谢。
    • 所以查询运行良好。您可能想检查您的数据。 SELECT * FROM sch.product WHERE tag = 'red' 是否返回一些结果?如果是,则选择返回的id 之一并运行:SELECT * from orgin.user WHERE oldid = <thisid>,它会返回什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2019-05-22
    相关资源
    最近更新 更多