[postgresql] 한 번에 여러 값을 postgres 테이블에 삽입하는 방법은 무엇입니까?

한 번에 여러 값을 업데이트하려는 테이블이 있습니다. 다음은 테이블 스키마입니다.

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

나는이 user_id여러 삽입 할 subservice_id한 번에의합니다. Postgres내가 이런 일을 할 수 있는 구문이 있습니까?

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의 대답의 짧은 버전 :

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


답변

이 솔루션을 기억하려고 할 때마다이 질문을 계속 찾기 때문에 약간 관련된 답변입니다. 여러 열이있는 여러 행 삽입 :

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


답변

보다 강력한 예는 다른 테이블의 모든 행에 대해 일부 테이블에 여러 행을 삽입해야하는 경우입니다.

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;


답변