3

最初に、同様の問題に対する INSERT/SELECT ソリューション (こちらを参照) は認識していますが、それは私のシナリオには当てはまりません。

これらは事前に不明であるため、すべての列を明示的にリストする必要のないソリューションを探しています。このクエリは、数十の別々のデータベースの同じテーブルで実行されます。すべてのデータベースに共通の列のサブセットがありますが、それぞれにそのデータベースだけに固有の固有の列もあります。

行全体をコピーし、列の既知/一定のサブセットを変更し、すべての列を明示的にリストせずに再挿入する方法はありますか? 唯一の解決策は、スキーマから収集した DDL 情報を使用してクエリを動的に構築することでしょうか?

4

2 に答える 2

1

create table as(or select into) と updateの組み合わせでやりたいことができると思います。

したがって、テーブルのコピーを作成します。

create table newTable as
    select *
    from oldTable

または、データベースに応じて:

select *
into newTable
from oldTable

次に update を使用して変更を行います。

update newTable
    set col2 = col1,
        code = (case when code = 'bad' then good else code end)
于 2013-04-17T14:10:40.770 に答える