Самый эффективный способ достичь желаемого:
(1) Удалить все строки Eruptions_since_2000
:
DELETE FROM Eruptions_since_2000;
(2) Вставить все строки со всеми значениями столбцов от 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
Полагаю, вам удалось вычислить start_year
, поскольку вы уже использовали его.
Альтернативой является этот оператор UPDATE с использованием значений строк , которые поддерживаются в версии 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
)
Если ваша версия SQLite ниже 3.15.0
, используйте этот менее эффективный оператор UPDATE:
update Eruptions_since_2000
set
Volcano_Number = (select e.Volcano_Number from Eruptions e, whereVolcano_name, e.Eruption_numberstart_date) = Eruptions_since_2000.Eruption_number),
Volcano_name = (select e.Volcano_name from Eruptions e whereVolcano_Number, e.Eruption_number = Eruptions_since_2000.Eruption_number)Volcano_name,
start_date = (select e.start_date from Eruptions e where e.Eruption_number = Eruptions_since_2000.Eruption_number)