Подтвердить что ты не робот

Как вставить сразу несколько значений в таблицу 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]);

Как мне это сделать?

4b9b3361

Ответ 2

Синтаксис добавления нескольких значений:

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

Но крокодилко ответ гораздо более сложен.

Ответ 3

Немного связанный ответ, потому что я постоянно нахожу этот вопрос каждый раз, когда пытаюсь запомнить это решение. Вставить несколько строк с несколькими столбцами:

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

Ответ 4

Более короткая версия krokodilko отвечает:

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

Ответ 5

Более надежный пример, когда вам нужно вставить несколько строк в некоторую таблицу для каждой строки в другой таблице:

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;

`` `