m0c*_*m0c 4 sql postgresql postgresql-9.5
我正在尝试在 m:n 表(用户-组关系)中插入一条记录,并在用户成功加入时返回该组。
但是我无法在插入后返回整个组。
with "group" as (
    SELECT * from "group" where code = 'tohubo' LIMIT 1
)
insert into group_users__user_groups ("group_users", "user_groups")
    select id from "group", 1 
returning (SELECT * from "group")
通过该查询,我目前收到错误消息
子查询必须只返回一列
我也尝试只返回 *,但后来我只得到 group_users__user_groups 的内容。
我还尝试在最后添加一个额外的 Select :
with "found_group" as (
    SELECT * from "group" where code = 'tohubo' LIMIT 1
)
insert into group_users__user_groups ("group_users", "user_groups")
    select 1, id from "found_group";
Select * from "found_group";
但是随后在第二个查询中没有定义 WITH 部分:
内核错误:错误:关系“found_group”不存在
该returning子句只能返回受插入影响的数据。
并且您只能在 CTE 中有一个“最终”语句,而不是插入和选择。
但是您可以简单地将插入移动到第二个 cte,然后在最后有一个 SELECT 返回找到的数据
with found_group as (
    SELECT * 
    from "group" 
    where code = 'tohubo' 
    LIMIT 1
), inserted as (
   insert into group_users__user_groups (group_users, user_groups)
   select 1, id 
   from found_group
)
Select * 
from found_group;
| 归档时间: | 
 | 
| 查看次数: | 2879 次 | 
| 最近记录: |