2

次のテーブルがあります。

Table A:
id int
v1 string
v2 string

Table B:
key int
val string

Table A_v2:
id int
v1 int
v2 int

テーブル A と B にデータをロードしました。テーブル A をテーブル A_v2 に変換しようとしています。各値 (列v1v2) をテーブル B の対応するキーに置き換えます。

これが理にかなっていることを願っています。そうでない場合は、例を挙げることができます。
私はSQLiteを使用しています。

挿入文はどのように書けばよいですか?

編集
ここに例があります:

A の行:
1 | abc | デフォルト

B の行:
5 | abc 42 | デフォルト

A_v2 の行は次のようになります
。5 | 42

4

2 に答える 2

1

私が理解したことは、TABLE_A の V1 および V2 列を TABLE_B の列 VAL の値に置き換えたいということです。

もしそうなら、次のクエリを使用できます..

create table table_a_v2 as 
       select * from table_a where 1>1;

このテーブルに挿入するには -

insert into table_a_v2 
select a.id,
       (select key from table_b whare val= a.v1) v1,
       (select key from table_b whare val= a.v2) v2
 from table_a

sqliteについてはよくわかりません..しかし、このコマンドは有効で、Oracleデータベースに従って機能しています。

于 2012-05-13T12:05:09.570 に答える
0

個人的には、結合を where 句に保持することを好むため、次のように使用します。

insert into A_v2(id, v1, v2)
    select a.id, bv1.key, bv2.key
    from a left outer join
         b bv1
         on a.v1 = bv1.val left outer join
         b bv2
         on a.v2 = bv2.val

「b」テーブルの「キー」の複数の値に注意してください。この場合、そのような値は複数の行を返します。

「挿入」とは別に「選択」クエリを実行することで、結果を検証できます。

于 2012-05-13T13:39:27.900 に答える