从不同表的列更新表

时间:2015-05-28 13:24:35

标签: sql postgresql

我有以下两个表(只显示相关的部分):

符号:

symbol, exchange_id, sector, <several other columns>
abc,    1,           xyz
arc,    2,           dkg

扇区:

symbol, sector
abc,    mno

扇区表中每个符号都有正确的扇区。我需要将扇区表中的所有扇区复制到符号表中(覆盖任何现有值),其中两个表中的符号匹配,但仅限于exchange_id = 1

我尝试过各种各样的选择而没有运气。我会认为以下选项可以工作,但我得到两个错误:表名'符号'多次指定:

UPDATE symbol
SET symbol.sector = sector.sector
FROM symbol, sector
WHERE symbol.symbol = sector.symbol
AND symbol.exchange_id=1

UPDATE symbol
SET    symbol.sector = sector.sector
FROM   symbol
JOIN   sector ON symbol.symbol = sector.symbol
WHERE  symbol.exchange_id=1

我正在使用postgresql。

1 个答案:

答案 0 :(得分:1)

您可以这样编写查询:

UPDATE symbol s
SET    sector=t.sector
FROM   sector t
WHERE  s.symbol=t.symbol

请查看小提琴here