1

結合は、私が理解できなかった 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

ステファンの答えに代わるもの。

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 に答える