我想在Postgresql中加入同一个表中的两列,但由于某种原因,我收到了这个错误。不知道怎么弄清楚。请帮忙。
- [42P01]错误:关系"a"不存在
- 职位:10
X表包含两个池(ABC、XYZ(、id、数字和描述。如果一个池中存在ID,但另一个池不存在ID,则应将描述列更新为"ADD"。需要在数字上加入池。
UPDATE A
SET A.Description = 'ADD'
FROM X AS A
LEFT JOIN X AS B ON B.number = A.number
AND B.id = 'ABC'
WHERE A.id = 'XYZ'
AND B.number IS NULL
AND A.Description IS NULL;
使用标准SQL,您不能将联接作为更新的一部分,但您可以做的是包含一个子查询来选择要更新的id。子查询可以包含联接。我不完全清楚你到底想完成什么,但你可以做这样的事情:
UPDATE x SET description='ADD' WHERE number IN (
SELECT a.number FROM x AS a
LEFT OUTER JOIN x AS b ON a.number=b.number AND a.id='XYZ' AND b.id='ABC'
WHERE b.number IS NULL
);
这将把表x与它自己连接起来,并将选择(并更新(在"ABC"one_answers"XYZ"区域中没有匹配数字的任何数字。
PostgreSQL确实有一个UPDATE FROM语法,它允许您使用复杂的子查询进行更新。它更灵活,但它是非标准的。您可以在此处找到此类查询的示例。