【问题标题】:MySQL insert into column data from another tableMySQL 从另一个表插入列数据
【发布时间】:2016-08-11 22:54:23
【问题描述】:

我有 2 张桌子:

   original {ID, FirstName, LastName}
   and
   dummy {ID(NULL), FirstName, LastName}

我必须将 original.ID 插入 t2.ID,但前提是两个表中的 FirstName 和 LastName 相同。现在,我试过了:

1.错误代码:1054。'where子句'中的未知列't2.FirstName'

INSERT INTO dummy (ID)
SELECT ID
FROM original
WHERE dummy.FirstName = original.FirstName
    AND dummy.LastName = original.LastName;

2.错误代码:1054。'where子句'中的未知列'original.FirstName'

UPDATE dummy
SET ID = original.ID
WHERE dummy.FirstName=original.FirstName
   AND dummy.LastName= original.LastName;

3.错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。

注意:我必须找到一种不禁用安全模式的方法。

UPDATE dummy
   JOIN original
   ON original.FirstName = dummy.FirstName
       AND original.LastName = dummy.LastName
SET dummy.IDPacient = original.ID
WHERE original.ID <> 0;

现在,如果有人可以帮助我了解我在这 3 个案例中的每一个错误和/或给我一个更好的解决方案,我将非常感谢您的帮助。

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    版本 1 完全错误 - 您将插入新行,而不是更新现有行。

    第 2 版已接近尾声,您只需要加入“原始”即可:

    UPDATE dummy
    SET ID = original.ID
    FROM dummy
    INNER JOIN original
      ON dummy.FirstName =original.FirstName
      AND dummy.LastName = original.LastName;
    

    【讨论】:

    • 感谢您的帮助。但是这里有些问题,我在FROM 收到语法错误,告诉我is not a valid input at this position
    • 我已经通过了从查询中消除的错误FROM 并在最后移动了set
    【解决方案2】:

    您需要在“原始”表和“虚拟”表之间对名字和姓氏执行连接,然后更新 ID

    试试这个..

    Update a
    Set a.ID = b.ID
    From dummy a
    Join original b
    On a.firstname = b.firstname
    And b.lastname = b.firstname
    

    您尝试根据“原始”表中的列进行过滤,但它未包含在查询的 from 子句中。

    如果您需要,此链接可能还会为您提供一些更有用的信息。 SQL update query using joins

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 2018-04-05
      • 1970-01-01
      • 2014-10-11
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多