如何一次插入多个值到postgres表中?

我有一个表,我试图一次更新多个值。 这是表格模式:

Column | Type | Modifiers ---------------+---------+----------- user_id | integer | subservice_id | integer | 

我有user_id并希望一次插入多个subservice_idPostgres有没有一个语法可以让我做这样的事情

 insert into user_subservices(user_id, subservice_id) values(1, [1, 2, 3]); 

我将如何做到这一点?

尝试:

 INSERT INTO user_subservices(user_id, subservice_id) SELECT 1 id, x FROM unnest(ARRAY[1,2,3,4,5,6,7,8,22,33]) x 

演示: http ://www.sqlfiddle.com/#!15/ 9a006/1

多值插入语法是:

 insert into table values (1,1), (1,2), (1,3), (2,1); 

但krokodilko的答案是非常冷静。

一个稍微相关的答案,因为每次我尝试记住这个解决scheme时,我总是发现这个问题。 插入具有多列的多行

 insert into user_subservices (user_id, subservice_id) select * from unnest(array[1, 2], array[3, 4]); 

krokodilko的答案更短的版本:

 insert into user_subservices(user_id, subservice_id) values(1, unnest(array[1, 2, 3])); 

更健壮的例子,当你需要在另一个表中的每一行插入多行到某个表中时:

 INSERT INTO user_subservices (user_id, subservice_id) SELECT users.id AS user_id, subservice_id FROM users CROSS JOIN unnest(ARRAY[1,2,3]) subservice_id; 

“`