sqlite,将列数据从一个表插入到另一个表

时间:2019-06-28 08:35:03

标签: sqlite

我是sql的新手,并且遇到以下问题, 在sqlite中,我感兴趣的是找到如何将一个表中的数据添加到另一个表中,其中x列中的数据应与Y列中的数据相对应。

例如,假设我的表格(Eruptions)由4列组成:

Eruption Number (PK) 
Volcano Number 
Volcano name
start date

我创建了一个名为Eruptions_since_2000的新表,并且有兴趣将原始表中的值添加到新表中。

新表(Eruptions_since_2000)包含4个空列:

eruption_number(PK,unique,not null) 
volcano_number 
volcano_name 
start_date

在第一步中,我使用以下代码将爆发编号(来自原始表)中的数据添加到新表中的eruption_number中:

INSERT INTO Eruptions_since_2000 (Eruption_number)  SELECT Eruption Number 
from Eruptions where start year >= 2000

现在,我还要添加以下几列(火山号,火山名称和开始日期)。但是,每个条目当然都需要对应于各自的喷发编号。这就是我遇到的问题,我不确定该怎么做。 它应该类似于我上面的代码行,但是与喷发编号对应的/对应的火山编号是如何添加的。

谢谢

1 个答案:

答案 0 :(得分:1)

实现所需目标的最有效方法是:
(1)删除self.isAscending = true; self.sortTitle = function () { if(self.isAscending){ self.arr= self.arr.sort((a, b) => (a.title > b.title) ? 1 : -1); }else{ self.arr= self.arr.sort((a, b) => (a.title > b.title) ? -1 : 1); } self.isAscending = !self.isAscending; } 的所有行:

Eruptions_since_2000

(2)将所有列的列值分别为DELETE FROM Eruptions_since_2000; Eruptions的行:

Eruptions_since_2000

我想您已经使用了INSERT INTO Eruptions_since_2000 (Eruption_number, Volcano_Number, Volcano_name, start_date) SELECT Eruption_number, Volcano_Number, Volcano_name, start_date FROM Eruptions WHERE start_year >= 2000 来计算。
备用方法是使用Row values的UPDATE语句,SQLite版本start_year支持此{}

3.15.0

如果您的SQLite版本低于update Eruptions_since_2000 set (Volcano_Number, Volcano_name, start_date) = ( select e.Volcano_Number, e.Volcano_name, e.start_date from Eruptions e where e.Eruption_number = Eruptions_since_2000.Eruption_number ) ,请使用以下效率较低的UPDATE语句:

3.15.0