1

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

数据库是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_2rates state = 'current'

我该怎么做?谢谢

4

2 回答 2

2

Stefan 答案的替代方案。

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 移植)。

于 2013-01-14T13:31:18.343 回答
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')
于 2013-01-14T13:28:37.660 回答