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,方法是将每个值(在列v1和中v2)替换为表 B 中的相应键。

我希望这是有道理的。如果不是我可以举个例子。
我正在使用 SQLite。

我将如何编写插入?

编辑
这是一个例子:

A 行:
1 | 美国广播公司 | 定义

B 中的行数:
5 | 美国广播公司 42 | 定义

A_v2 中的行应该是:
1 | 5 | 42

4

2 回答 2

1

据我了解..您想用 TABLE_B 中的 VAL 列的值替换 TABLE_A 的 V1 和 V2 列。

如果是这样,您可以使用以下查询..

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”表中“key”的多个值。在这种情况下,这些值将返回多行。

您可以通过独立于“插入”运行“选择”查询来验证结果。

于 2012-05-13T13:39:27.900 回答