SQlite: wybierz?


80

Nie jestem pewien, czy mogę użyć polecenia select into do importowania danych z innej tabeli, takiej jak ta:

select * into
  bookmark1 
from bookmark;    

Czy to prawda, że ​​SQlite nie obsługuje tej składni? czy są jakieś inne alternatywy?

Odpowiedzi:


50

Możesz spróbować tego zapytania:

insert into bookmark1 select * from bookmark

12
Zakłada się, że zakładka bookmark1 już istnieje, podczas gdy wybierz w tworzy nową tabelę.
wit.

@vit, oczywiście. Dotyczy to przypadku, gdy chcemy ponownie zaimportować w tabeli.
Nick Dandoulakis

@Nick: Jestem pewien, że to wiesz, po prostu pomyślałem, że powinno to być jasne dla każdego, dlaczego może później natknąć się na to pytanie. :)
wit.

182

Mógłbyś:

create table bookmark1 as select * from bookmark;

2
przepraszam, nie mogę dać żadnej uwagi, bo jestem nowy, ale twoja sugestia działa dobrze. Dzięki =)
Glaucon

3
Doskonała odpowiedź, zwięzła i na temat. +1 i wiele chwał.
zeFree

jakikolwiek sposób, aby to zadziałało w dwóch sytuacjach, gdzie tabela już istnieje (nadpisuje) i gdzie nie (tworzy nową tabelę)?
oob

W rzeczywistości jest to lepsza odpowiedź niż przyjęta jako odpowiedź!
MelloG,

1
@Glaucon teraz możesz zagłosować za tą odpowiedzią i wybrać ją jako zaakceptowaną odpowiedź. Pomoże każdemu, kto tu przyjedzie
Avision

23

Zakładam, że bookmark1 to nowa utworzona przez Ciebie tabela, która jest taka sama jak tabela zakładek. W takim przypadku możesz użyć następującego formatu.

CREATE TABLE bookmark1 AS SELECT * FROM bookmark;

Możesz też użyć instrukcji insert z podzapytaniem. Aby uzyskać informacje na temat różnych opcji instrukcji wstawiania, zobacz: SQL w rozumieniu SQLite


11
create table NewTable as
select * from OldTable where 1 <> 1

Spowoduje to skopiowanie struktury danych.


1
To całkiem sprytne.
TheLegendaryCopyCoder

opakuj ten kod SQL w blok try (lub równoważną konstrukcję) w wybranym języku programowania.
knb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.