将查找值插入多个列

时间:2012-05-13 09:09:46

标签: sql sqlite

我有以下表格:

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 | DEF

B中的行:
5 | ABC 42 | DEF

A_v2中的行应为:
1 | 5 | 42

2 个答案:

答案 0 :(得分: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数据库工作。

答案 1 :(得分: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”的多个值。在这种情况下,此类值将返回多行。

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