我只用了大约一天的时间来使用PostgreSQL并且知道什么是一个非常简单的问题。我想创建一个左外连接来搜索不匹配的值。我想从连接创建一个子查询,选择空值,然后更新基于此选择。我对左外连接的看法如下:
SELECT TableA.field1, TableA.field2, TableB.field3
FROM
TableA
LEFT OUTER JOIN TableB ON TableA.field1 = TableB.field1
这适用于加入。但是,我无法弄清楚如何使用子查询只返回TableB.field1 is null
的行。
答案 0 :(得分:1)
以下是你......
我想你想根据这个选择来更新行。使用FROM
clause将(派生)表格加入UPDATE
:
UPDATE some_table t
SET (field1, field2, field3)
= (a.field1, a.field2, a.field3)
FROM (
SELECT a.a_id, a.field1, a.field2, a.field3
FROM tablea a
LEFT JOIN tableb b USING (field1)
WHERE b.field1 IS NULL
) a
WHERE t.a_id = a.a_id; -- join on the connecting column
使用短语法变体更新多个列。
答案 1 :(得分:0)
您不需要子查询:
SELECT TableA.field1, TableA.field2, TableB.field1
FROM TableA
LEFT OUTER JOIN TableB ON TableA.field1 = TableB.field1
where tableB.field1 IS NULL;
不确定您对“的意思,然后根据此选择更新”