SQL查询根据索引值将列从一个表复制到另一表

时间:2020-10-23 01:26:11

标签: sql sqlite

我试图制定一个查询,将表中一列的内容复制到另一张表中,并将其与索引值进行匹配。

两个表都将具有相同的索引值。

示例:

表1

+-----------------------------------+------------+
|               index               |    val     |
+-----------------------------------+------------+
|                 11                |     AA     |
|                 23                |     AA     |
|                 34                |     BB     |
+-----------------------------------+------------+

表2

+-----------------------------------+
|               index               |
+-----------------------------------+
|                 34                |
|                 11                |
|                 23                |
+-----------------------------------+

运行查询后,使表2反映:

+-----------------------------------+------------+
|               index               |    val     |
+-----------------------------------+------------+
|                 34                |     BB     |
|                 11                |     AA     |
|                 23                |     AA     |
+-----------------------------------+------------+

我将不胜感激。预先感谢。

3 个答案:

答案 0 :(得分:0)

我不太了解您为什么要这样做,但是看起来可能像这样:

Alter table BTABLE add val varchar(10);
update BTABLE  bta set val = (select ata.val from ATABLE ata where ata.index = bta.index);

唯一的是,这样您将拥有2个完全相同的表...

答案 1 :(得分:0)

执行您描述的最简单的方法是删除Table2并将其重新创建为Table1的副本:

DROP TABLE Table2;

CREATE TABLE Table2 AS
SELECT * FROM Table1;

请参见demo
结果(对于Table2):

> index | val
> ----: | :--
>    11 | AA 
>    23 | AA 
>    34 | BB 

答案 2 :(得分:0)

就像Irina Avram告诉您的那样,为什么要复制数据库中已经存在的列。 您可以使用JOIN和SELECT语句获得所需的内容,而无需在数据库中添加更多数据。

SELECT Table2.index, Table1.val FROM Table2 JOIN Table1 ON Table2.index = Table1.index

Learn more about JOIN