我有两张桌子:
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个案例中做错了什么和/或给我一个更好的解决方案,我将非常感谢你的帮助。
答案 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