我有以下表格:
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 | abc | DEF
B中的行:
5 | ABC
42 | DEF
A_v2中的行应为:
1 | 5 | 42
答案 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”的多个值。在这种情况下,此类值将返回多行。
您可以通过独立于“插入”运行“选择”查询来验证结果。