SQL UPDATE-with-Join in MonetDB



我使用的是MonetDB 11.33.3(2019年4月发布)。我想更新一些表中的记录,使用另一个表中的相应值。

具体来说,例如,假设table1col1col3列,table2col2col4列。假设存在一个从table1.col3table2.col4的内射映射(这样,当我们与这些列等同连接时,我们最多只能得到一个匹配)。我想将table1.col1设置为相应的table2.col3值-从table2中的单个匹配记录(使用我刚才提到的对等连接)。

这是我尝试的查询:

WITH t2 AS (SELECT * FROM table2)
UPDATE 
table1
SET
col1 = t2.col2
WHERE
col3 = t2.col4
;

这给了我:

SELECT: identifier 'col1' unknown

我不明白为什么我得到这个特定的错误,因此不明白我错了什么或如何修复查询。

尝试使用相关子查询:

UPDATE table1
SET col1 = (SELECT t2.col2 FROM table2 t2 WHERE table1.col3 = t2.col4)
WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE table1.col3 = t2.col4);

这看起来像是一个已经修复的bug。我尝试在2019年11月发布,我没有得到错误。

最新更新