/ / Wstaw wartości z listy w pojedynczej instrukcji SQL - sql, vb6, sql-insert

Wstaw wartości z listy w pojedynczej instrukcji SQL - sql, vb6, sql-insert

Mam listę z wartościami. Chcę wstawić te wartości w tabeli SQL za pomocą jednego INSERT komunikat.

Przykład: Powiedzmy, że istnieje lista z nazwami (rozmiar listy nie jest stały). Tam jest STUDENTS tabela z NAME kolumna. Chcę wstawić w STUDENTS zestawić nazwy z listy za pomocą jednego INSERT komunikat.

Teraz przeglądam listę i wstawiam wartość do tabeli. Oznacza to, że liczba instrukcji insertowych jest równa długości listy.

List<String> Name;
foreach (String s in Name)
{
INSERT INTO STUDENTS (NAME) VALUES (s)
}

Czy jest sposób, w jaki mogę to osiągnąć w jednym SQL INSERT komunikat? Każda pomoc jest doceniana.

Odpowiedzi:

5 dla odpowiedzi № 1

W MySql możesz to zrobić w ten sposób

INSERT INTO tbl (f1,f2) VALUES(1,2),(3,4),(5,6)...(55,77);

Dla dialektu mssql wszystko to samo


0 dla odpowiedzi nr 2

Unia może zostać wykorzystana do osiągnięcia tego celu, choć technicznie każdy związek jest jego własnym stwierdzeniem.

krótkie demo:

create table #i(hello int)
insert into #i select 1 union all select 2
select * from #i
drop table #i

Istnieją inne / lepsze sposoby wypełniania tabel z list ... zależą one od bazy danych, w której się znajdujesz.


0 dla odpowiedzi № 3

Aby to zrobić za pomocą jednego INSERT jest z WYBIERZ .. musiałbyś przekonwertować swoją listę na to:

INSERT STUDENTS(NAME)
SELECT "Tom"
UNION ALL
SELECT "Bill"
UNION ALL
SELECT "Sarah"

0 dla odpowiedzi nr 4

Jeśli twoja lista znajduje się w tabeli tymczasowej, możesz użyć następującej składni:

insert into tblname
(columnlist)
select name from temptable;