我有两个名为TableA
and的表TableB
。两者TableA
和TableB
都包含以下列:name
, member_id
. TableB
当前包含 的“正确”值member_id
,而TableA
没有。
我想做的是将列中的所有值迁移member_id
到TableB
相应列中TableA
(与列中的值匹配name
)。但是,有时两个表之间的名称键入略有不同。
我编写了以下 SQL 查询,尽管下面的子查询WHEN EXISTS
不正确。有人可以帮助我吗?谢谢。
UPDATE TableA
SET member_id =
CASE
WHEN EXISTS
(SELECT member_id
FROM TableB
WHERE TableB.name ILIKE '%' || 'TableA.name' || '%'
LIMIT 1)
THEN member_id
ELSE '1'
END
WHERE
TableA.member_id = '0'
另外,我将其设置为当member_id
未知时,将其设置为 0。ELSE '1'
关键是将列中的 0 更新为 1,member_id
以便我知道查询已运行并修改了该行。
澄清:我希望设置TableA.member_id
=类似于TableB.member_id
. 0 和 1 用于调试,而不是最终目标。TableA.name
TableB.name