SQlite: chọn vào?


80

Tôi không chắc liệu mình có thể sử dụng select into để nhập dữ liệu từ một bảng khác như sau hay không:

select * into
  bookmark1 
from bookmark;    

Có đúng là SQlite không hỗ trợ cú pháp này không? Còn lựa chọn nào nữa ko?

Câu trả lời:


51

Bạn có thể thử truy vấn này:

insert into bookmark1 select * from bookmark

12
Điều này giả định rằng bookmark1 đã tồn tại, trong khi select vào sẽ tạo một bảng mới.
vit

@vit, tất nhiên là có. Nó dành cho trường hợp chúng ta muốn nhập lại trong một bảng.
Nick Dandoulakis

@Nick: Tôi chắc rằng bạn biết điều này, tôi chỉ nghĩ điều này nên được làm rõ ràng cho bất kỳ ai tại sao có thể vấp phải câu hỏi này sau đó. :)
vit

182

Bạn có thể làm:

create table bookmark1 as select * from bookmark;

2
xin lỗi tôi không thể đưa ra bất kỳ điểm nào vì tôi là người mới, nhưng đề xuất của bạn hoạt động tốt. Cảm ơn =)
Glaucon

3
Câu trả lời hoàn hảo và ngắn gọn & vào vấn đề. +1 và rất nhiều kudo.
zeFree

bất kỳ cách nào để thực hiện công việc này trong hai tình huống, nơi bảng đã tồn tại (ghi đè) và nơi không (tạo bảng mới)?
oob

Đây thực sự là một câu trả lời tốt hơn câu trả lời được chấp nhận là câu trả lời!
MelloG

1
@Glaucon bây giờ bạn có thể tán thành câu trả lời này và chọn nó làm câu trả lời được chấp nhận. Nó sẽ giúp ích cho tất cả những ai đến đây
Avision

22

Tôi giả sử rằng bookmark1 là một bảng mới mà bạn đã tạo, giống như bảng đánh dấu. Trong trường hợp đó, bạn có thể sử dụng định dạng sau.

CREATE TABLE bookmark1 AS SELECT * FROM bookmark;

Hoặc bạn cũng có thể sử dụng câu lệnh chèn với truy vấn con. Để biết các tùy chọn câu lệnh chèn khác nhau, hãy tham khảo: SQL As đã hiểu bởi SQLite


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

Điều này sẽ sao chép cấu trúc dữ liệu cho bạn.


1
Điều này là khá thông minh.
TheLegendaryCopyCoder

bọc SQL này trong một khối try (hoặc cấu trúc tương đương) bằng ngôn ngữ lập trình bạn chọn.
knb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.