PostgreSQL 插入 x 次 2 相同的行
PostgreSQL insert x times 2 same rows
我有以下 table:
user_setting
----+---------+--------------+---------------
id | user_id | setting_name | setting_value
----+---------+--------------+---------------
1 | 1 | color | 000000
2 | 1 | date | aammjj
3 | 2 | color | 000000
4 | 2 | date | aammjj
5 | 3 | color | 000000
6 | 3 | date | aammjj
您是否有解决方案,可以用 3 INSERT
中的这些值填充 table 以及包含 setting_name
和关联默认值 setting_value
的数组?
我在想:
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 1, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 1, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 3, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
select user_id, p1, p2
from
(values (1),(2),(3)) u (user_id)
cross join
(values ('color','000000'),('date','aammjj')) as params (p1, p2)
;
user_id | p1 | p2
---------+-------+--------
1 | color | 000000
1 | date | aammjj
2 | color | 000000
2 | date | aammjj
3 | color | 000000
3 | date | aammjj
我有以下 table:
user_setting
----+---------+--------------+---------------
id | user_id | setting_name | setting_value
----+---------+--------------+---------------
1 | 1 | color | 000000
2 | 1 | date | aammjj
3 | 2 | color | 000000
4 | 2 | date | aammjj
5 | 3 | color | 000000
6 | 3 | date | aammjj
您是否有解决方案,可以用 3 INSERT
中的这些值填充 table 以及包含 setting_name
和关联默认值 setting_value
的数组?
我在想:
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 1, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 1, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
INSERT INTO user_setting (user_id, setting_name, setting_value)
( SELECT 3, params[1], params[2]
FROM unnest(ARRAY[['color','000000'],['date','aammjj']]) AS params )
select user_id, p1, p2
from
(values (1),(2),(3)) u (user_id)
cross join
(values ('color','000000'),('date','aammjj')) as params (p1, p2)
;
user_id | p1 | p2
---------+-------+--------
1 | color | 000000
1 | date | aammjj
2 | color | 000000
2 | date | aammjj
3 | color | 000000
3 | date | aammjj