我有两个名为TableAand的表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