我有2个表'A'和'B'。两者都有一个共同的列“名称”,并通过“ID”列相互链接。表A中的'名称'列是空的,而表B中的数据是我的。我的任务是将表B中该列中的所有数据填充到具有相应ID的表A中。通过另一个表中的列更新一个表中的列
我使用下面的查询:
UPDATE A
SET A.name = (SELECT B.name from B WHERE A.id = B.id)
WHERE EXISTS
(SELECT B.name from B)
当我运行SQL开发人员的查询,它只是冻结和我必须强制关闭它。任何人都可以告诉我查询有什么问题吗?
我认为你的意图是从B中的对应名称更新的名字,但你的存在并不代表这个意图 - 它是用于在每个记录真实的,如果有在B. –
至少一行您需要添加WHERE EXISTS“子句中的WHERE a.id = b.id',因为它确实检查'b'表中是否有行,而''表中是否存在该行的id'。并且不要选择一列,选择一个常数。如果两个id列位于索引中,但“name”列不是(或位于不同的索引中),则意味着查询只需访问索引,而不是表格。 –
您需要将WHERE A.id = B.id'添加到exists()以将更新候选与实际数据相关联。 –