Postgres unest数组语法有问题



我正在寻找关于执行此插入的最佳方法的指导。我试图为role_id 58385创建11个条目,同时循环遍历这些数组中的每个数组的值。我是PostgreSQL的新手,需要一些关于我在这个例子中做错了什么的指导。

INSERT INTO public.acls (role_id, acl_id, update, can_grant, retrieve, create, archive) VALUES (
'58385', 
unnest(array[1,14,20,21,22,24,25,26,36,300,302]), 
unnest(array[f,f,t,t,f,f,f,t,f,t,t]), 
unnest(array[f,f,f,f,f,f,f,f,f,f,f]), 
unnest(array[t,t,t,t,t,t,t,t,t,t,t]), 
unnest(array[f,f,t,t,f,f,f,t,f,t,t]), 
unnest(array[f,f,f,f,f,f,f,f,f,f,f])
)

是否需要为每个数组提供一个SELECT子查询?或者我可以从六个数组中做一个数组并插入它们。

单个select将为您完成此操作,但tf需要是truefalse:

select '58385',
unnest(array[1,14,20,21,22,24,25,26,36,300,302]),
unnest(array[false,false,true,true,false,false,false,true,false,true,true]),
unnest(array[false,false,false,false,false,false,false,false,false,false,false]),
unnest(array[true,true,true,true,true,true,true,true,true,true,true]),
unnest(array[false,false,true,true,false,false,false,true,false,true,true]),
unnest(array[false,false,false,false,false,false,false,false,false,false,false])
;
?column? | unnest | unnest | unnest | unnest | unnest | unnest 
----------+--------+--------+--------+--------+--------+--------
58385    |      1 | f      | f      | t      | f      | f
58385    |     14 | f      | f      | t      | f      | f
58385    |     20 | t      | f      | t      | t      | f
58385    |     21 | t      | f      | t      | t      | f
58385    |     22 | f      | f      | t      | f      | f
58385    |     24 | f      | f      | t      | f      | f
58385    |     25 | f      | f      | t      | f      | f
58385    |     26 | t      | f      | t      | t      | f
58385    |     36 | f      | f      | t      | f      | f
58385    |    300 | t      | f      | t      | t      | f
58385    |    302 | t      | f      | t      | t      | f
(11 rows)

最新更新