PostgreSQL:使用从tabB和tabC中选择的内容更新tabA

PostgreSQL:使用从tabB和tabC中选择的内容更新tabA,postgresql,select,Postgresql,Select,我在tabC有一个选择。我已将该选择应用于tabB。现在我要用这两个选项中的值更新tabA 在选项卡C和选项卡B上选择: SELECT * FROM tabC WHERE id_field IN (SELECT id_field FROM tabB WHERE date_IN = '2011-02-22') ORDER BY id_field 更新tabA: UPDATE tabA SET field_1 = tabC.field_1, field_2 = tabC.field_2, fi

我在tabC有一个选择。我已将该选择应用于tabB。现在我要用这两个选项中的值更新tabA

在选项卡C和选项卡B上选择:

SELECT * FROM tabC
WHERE id_field IN
  (SELECT id_field FROM tabB WHERE date_IN = '2011-02-22')
ORDER BY id_field
更新tabA:

UPDATE tabA
SET field_1 = tabC.field_1, field_2 = tabC.field_2, field_2 = tabC.field_2
FROM tabC WHERE tabA.id_field IN
  (SELECT tabC.id_field FROM tabC WHERE tabC.id_field IN
    (SELECT id_field FROM tabB WHERE date_IN = '2011-02-22'))
UPDATE语句运行时没有任何错误,但结果不是我所期望的:这3个字段的所有行的值都相同。怎么了?

改用内部联接

UPDATE tabA
   SET field_1 = tabC.field_1,
       field_2 = tabC.field_2,
       field_3 = tabC.field_3 
  FROM tabC
       INNER JOIN tabB ON tabC.id_field = tabB.id_field AND tabB.date_IN = '2011-02-22'
 WHERE tabA.id_field = tabC.id_field;