Ich habe eine Tabelle, in der ich versuche, mehrere Werte gleichzeitig zu aktualisieren. Hier ist das Tabellenschema:
Column | Type | Modifiers
---------------+---------+-----------
user_id | integer |
subservice_id | integer |
Ich habe die user_id
und möchte mehrere gleichzeitig einfügen subservice_id
. Gibt es eine Syntax Postgres
, mit der ich so etwas machen kann?
insert into user_subservices(user_id, subservice_id) values(1, [1, 2, 3]);
Wie würde ich das machen?
postgresql
jhamm
quelle
quelle
generate_series
Sie dba.stackexchange.com/a/89544/16892Antworten:
Versuchen:
Demo: http://www.sqlfiddle.com/#!15/9a006/1
quelle
Die mehrwertige Einfügesyntax lautet:
Aber Krokodilkos Antwort ist viel schlauer.
quelle
id
?insert into orders_cancel_reasons_infos values (1,1,"Changed my mind",1), (2,2,"Quality not satisfactory",1), (3,3,"Incompatible or not useful",1), (4,4,"Damaged product but shipping box is good",1), (5,5,"Items arrived too late",1), (6,6,"Missing part or accessories",1), (7,7,"Product and shipping box are damaged",1), (8,8,"Wrong item was sent",1), (9,9,"Defective item",1), (10,10,"Inaccurate description",1), (11,11,"Other",1);
' '
für den Text verwenden, den Sie einfügen. so etwas wieinsert into orders_cancel_reasons_infos values (1,1,'Changed my mind',1), (2,2,'Quality not satisfactory',1)
wird funktionieren. Sie können prüfen , diese für mehr heraus auf Einzel- und doppelten Anführungszeichen.Eine kürzere Version von Krokodilkos Antwort:
quelle
insert into user_subservices(user_id, subservice_id) select 1, column_value from table(sys.odcinumberlist(1,2,3))
.insert into user_subservices(user_id, subservice_id) values(1, unnest(ARRAY(select id from subservices where name like '%test%')));
Eine leicht verwandte Antwort, da ich diese Frage jedes Mal finde, wenn ich versuche, mich an diese Lösung zu erinnern. Fügen Sie mehrere Zeilen mit mehreren Spalten ein :
quelle
Robusteres Beispiel, wenn Sie für jede Zeile in einer anderen Tabelle mehrere Zeilen in eine Tabelle einfügen müssen:
quelle