SQlite: вибрати в?


80

Я не впевнений, чи можу я за допомогою select into імпортувати дані з іншої таблиці, як це:

select * into
  bookmark1 
from bookmark;    

Чи правда, що SQlite не підтримує цей синтаксис? чи є інші альтернативи?

Відповіді:


50

Ви можете спробувати цей запит:

insert into bookmark1 select * from bookmark

12
Це передбачає, що bookmark1 вже існує, тоді як select into створює нову таблицю.
віт

@vit, так звичайно. Це для випадку, який ми хочемо знову імпортувати в таблиці.
Нік Дандулакіс

@ Нік: Я впевнений, ти це знаєш, я просто думав, що це має бути чітко розказано кожному, чому пізніше може натрапити на це питання. :)
віт

182

Ви можете зробити:

create table bookmark1 as select * from bookmark;

2
вибачте, я не можу дати жодної точки, бо я новачок, але ваша пропозиція працює добре Дякую =)
Глаукон

3
Ідеальна відповідь, лаконічна і суть справи. +1 і багато похвал.
zeFree

будь-яким способом отримати цю роботу в двох ситуаціях, коли таблиця вже існує (перезаписати), а де її немає (створити нову таблицю)?
oob

Це насправді краща відповідь, ніж та, що прийнята як відповідь!
MelloG

1
@Glaucon тепер ви можете проголосувати за цю відповідь і вибрати її як прийняту відповідь. Це допоможе всім, хто прийде сюди
Avision

23

Я припускаю, що bookmark1 - це нова створена вами таблиця, яка така ж, як і таблиця закладок. У цьому випадку ви можете використовувати наступний формат.

CREATE TABLE bookmark1 AS SELECT * FROM bookmark;

Або ви також можете використовувати оператор insert із підзапитом. Інші варіанти операторів вставки див. У: SQL як розуміє SQLite


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

Це скопіює для вас структуру даних.


1
Це досить розумно.
TheLegendaryCopyCoder

оберніть цей SQL у блок спроб (або еквівалентну конструкцію) мовою програмування на ваш вибір.
knb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.