한 번에 여러 값을 업데이트하려는 테이블이 있습니다. 다음은 테이블 스키마입니다.
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;