MySQL从另一个表插入到列数据中

时间:2016-08-11 22:54:24

标签: mysql mysql-workbench

我有两张桌子:

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

我必须在原始.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的表要禁用安全模式,请切换首选项中的选项 - > SQL编辑器并重新连接。

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

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

现在,如果有人能够帮助我理解我在这3个案例中做错了什么和/或给我一个更好的解决方案,我将非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

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

版本2已关闭,您只需要加入&#34;原创&#34;:

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

答案 1 :(得分:1)

您需要在&#34;原始&#34;之间执行名字和姓氏的联接。和&#34;假&#34;表然后更新ID

试试这个..

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

您尝试根据&#34;原始&#34;中的列进行过滤表但它没有包含在查询中的from子句中。

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