Redshift:使用 LEFT JOIN returns "table name specified more than once" 错误的 UPDATE 语句

Redshift: UPDATE statement using a LEFT JOIN returns "table name specified more than once" error

我在 Redshift 中有一个更新语句,我想使用 LEFT JOIN 方法来识别第二个 table 中不存在的记录。该语句不断返回多次指定的 "table 名称" 错误。我知道我可以使用不同的方法,例如 NOT IN 和子查询,但我想了解如何使用 LEFT JOIN 方法在 PostgreSQL 中调整此脚本。提前谢谢你。

UPDATE A  
   SET A.column_Name = 'Y' 

FROM tbl_A A
LEFT JOIN tbl_B B
ON A.Mathcing_Column_Name = B.Matching_Column_Name
WHERE B.Matching_Column_Name is NULL

改用NOT EXISTS

UPDATE tbl_A A  
   SET column_Name = 'Y' 
   WHERE NOT EXISTS (SELECT 1
                     FROM tbl_B B
                     WHERE A.Matching_Column_Name = B.Matching_Column_Name
                    );

试试这个。 (正在运行)

with temp AS
(
  SELECT A.* FROM tbl_A A
  LEFT JOIN tbl_B B
  ON A.Mathcing_Column_Name = B.Matching_Column_Name
  WHERE B.Matching_Column_Name is NULL
)
UPDATE tbl_A C  SET column_Name = 'Y' 
from temp D
where C.id=D.id