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
我在 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