Tenho uma tabela que estou tentando atualizar vários valores de uma vez. Aqui está o esquema da tabela:
Column | Type | Modifiers
---------------+---------+-----------
user_id | integer |
subservice_id | integer |
Eu tenho o user_id
e desejo inserir vários de subservice_id
uma vez. Existe uma sintaxe Postgres
que me permita fazer algo assim
insert into user_subservices(user_id, subservice_id) values(1, [1, 2, 3]);
Como eu faria isso?
postgresql
Jhamm
fonte
fonte
generate_series
consulte dba.stackexchange.com/a/89544/16892Respostas:
Experimentar:
Demo: http://www.sqlfiddle.com/#!15/9a006/1
fonte
A sintaxe de inserção de vários valores é:
Mas a resposta de krokodilko é muito mais engenhosa.
fonte
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);
' '
para o texto que está inserindo. então algo como,insert into orders_cancel_reasons_infos values (1,1,'Changed my mind',1), (2,2,'Quality not satisfactory',1)
vai funcionar. Você pode verificar isso para obter mais informações sobre aspas simples e duplas.Uma versão mais curta da resposta de krokodilko:
fonte
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%')));
Uma resposta ligeiramente relacionada, porque continuo encontrando essa pergunta toda vez que tento me lembrar dessa solução. Insira várias linhas com várias colunas :
fonte
Exemplo mais robusto, para quando você precisar inserir várias linhas em alguma tabela para cada linha em outra tabela:
fonte