问题描述
我使用的是 monetdb 11.33.3(2019 年 4 月版)。我想更新某个表中的记录,使用另一个表中的相应值。
具体来说,例如,假设 table1
有 col1
、col3
列,table2
有 col2
、col4
列。假设有一个从 table1.col3
的值到 table2.col4
的单射映射(这样当我们对这些列进行等值连接时,我们最多得到一个匹配项)。我想将 table1.col1
设置为相应的 table2.col3
值 - 从 table2
中的单个匹配记录(使用我刚刚提到的 equi-join)。
这是我尝试的查询:
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);
,
这看起来像是已修复的错误。我尝试了 2019 年 11 月的版本,但没有出现错误。