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 № 1W 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;