2017-03-17 15 views
0

私はPostgreSQLデータベース内の複数のテーブルを更新します。彼らはすべて似た名前を持っています。たとえば :データベース内の複数の列を選択する方法は?

  1. usa-al_nt_2016_q3_a_2-8-1b1

  2. usa-ak_nt_2016_q3_a_2-8-1b1

  3. usa-al_nt_2016_q3_a_2-8-1b1

どのように私はこのような構造で、私のDB内のこれらのテーブルのすべてを更新することができますusa- .. ._nt_2016_q3_a_2-8-1b1

+4

一つUPDATEを。しかし、質問には、むしろ、名前が似ている複数のテーブル(およびおそらくはコンテンツ)があるのはなぜですか? – jarlh

答えて

0

ループ内で動的更新で機能するexecuteを呼び出すプロシージャを作成する必要があります。

for .... loop 
    execute 'UPDATE ' || your_table || ' SET name = ' || your_name || ' WHERE id = ' || your_id; 
end loop; 

編集、このショー:テーブルごと

declare 
    rec record; 
begin 
for rec in (select table_name from information_schema.tables where position('usa-' in table_name) = 1 and table_name like '%_2016_q3_a_2-8-1b1') loop 
    execute 'UPDATE ' || rec.table_name || ' SET name = ' || your_name || ' WHERE id = ' || your_id; 
end loop; 
+0

でも、どのようにして、最初の "usa-"と最後の "_2016_q3_a_2-8-1b1"という表を使ってループすることができますか? – Moehre

+0

エラーが表示されます。[エラー] 29.0:予期しない構文エラーです。これが何を意味するのか知っていますか? – Moehre

関連する問題