Postgres / SQL加入和更新

时间:2013-01-14 13:23:41

标签: sql postgresql join

加入是我永远无法理解的一件事,即使用哪种类型以及它们实际如何工作。我需要编写一个查询,我知道我需要加入它。

数据库是postgres。

基本表设置如下(一些细节已编辑)

rates (
rates_id Primary Key, Auto Increment
state String, can either be 'current' or 'history'
)

rates_records (
rates_records_id Primary key, auto increment
rates_id = integer
column_1,
column_2
)

每个rates_records条目都将rates_id设置为rates表中存在的值

我想更新每个rates_records行并修改相关column_1 column_2

所在的ratesstate = 'current'数据

我该怎么做?感谢

2 个答案:

答案 0 :(得分:2)

替代斯特凡的回答。

update rates_records 
   set column_1 = 'foo', 
       column_2 = 'bar'
from rates 
  where rates.rates_id = rates_records.rates_id
    and rates.state = 'current';

更多详细信息和示例在手册中:http://www.postgresql.org/docs/current/static/sql-update.html

您喜欢哪种格式基本上是品味问题。我不相信一个比另一个更好或更快(Stefan的答案是标准的SQL,所以它可以在DBMS中移植)。

答案 1 :(得分:0)

update rates_records set column_1 = 'this', column_2 = 'that'
where rates_records_id 
in (select rates_records_id from rates_records rr 
join rates r on rr.rates_id = r.rates_id where state = 'current')