【问题标题】:Append records from one table to another using the common field使用公共字段将记录从一个表附加到另一个表
【发布时间】:2015-12-02 20:08:43
【问题描述】:

关于这个问题有很多不同的帖子,但我找不到我需要的答案。我希望这个问题是独一无二的。

我正在尝试将所有数据从一个表附加到另一个表,而不创建新记录。第二个表中的数据实际上是第一个表中部分现有记录的数据子集。

例如: 我有桌子“SPK”。我想将 SPK 中的所有数据写入“RCT”表中。我要匹配的每条记录之间的公共字段是 RegID,它在两个表中都是唯一的(即每个 RCT 记录只有一个 SPK 记录)。

【问题讨论】:

    标签: mysql sql merge


    【解决方案1】:

    如果我理解正确,您的意思是将一个表中的列(称为 SECOND)附加到另一个(称为 FIRST)。

    在那种情况下,这行得通吗?

    UPDATE 
        regcontactsTest
        JOIN 
        speakersTest 
        ON speakersTest.RegistrationID = regcontactsTest.RegistrationID
    SET regcontactsTest.presentationtitle = speakersTest.presentationtitle
    

    编辑:根据 Mariadb 语法更新查询

    【讨论】:

    • 所以我运行了这个确切的查询。但它给了我这个错误:#1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“FROM speakerTest JOIN regcontactsTest ON speakerTest”附近使用正确的语法 UPDATE regcontactsTest SET regcontactsTest.presentationtitle = speakersTest.presentationtitle FROM speakersTest JOIN regcontactsTest ON speakersTest.RegistrationID = regcontactsTest.RegistrationID
    • 你可以试试这个:UPDATE regcontactsTest JOIN speakerTest ON speakerTest.RegistrationID = regcontactsTest.RegistrationID SET regcontactsTest.presentationtitle = speakerTest.presentationtitle
    • 你好,我今天做了追加。我注意到一件奇怪的事情,当我点击表格时,它显示 显示第 0 - 29 行(总共 16495 行,查询耗时 0.0003 秒)[字段名称:字段内容......]通知。注意到后面有一个字段名称和内容的括号吗?我不确定查询期间是否出现问题。有什么想法吗?
    【解决方案2】:

    您需要使用 JOIN。对于一般更新加入:

     update tab1 a 
       join tab2 b ON a.join_colA = b.join_colB  
       SET a.columnToUpdate = [something]
    

    或者换句话说:

    update
      tab1 a 
      join tab2 b on ..
    set a.field=...;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多