我使用的是MonetDB 11.33.3(2019年4月发布)。我想更新一些表中的记录,使用另一个表中的相应值。
具体来说,例如,假设table1
有col1
、col3
列,table2
有col2
、col4
列。假设存在一个从table1.col3
到table2.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月发布,我没有得到错误。