首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以以某种方式分组插入返回吗?

我可以以某种方式分组插入返回吗?
EN

Database Administration用户
提问于 2018-07-09 09:35:38
回答 1查看 37关注 0票数 0

我试图在单行中插入user和他的多个用户角色+返回已创建用户的id。我使用了以下查询:

代码语言:javascript
复制
WITH inserted_user as (
 insert into "user" (username, password, nickname, account_non_expired, 
account_non_locked, credentials_non_expired, enabled)
  values ('username', 'password-hash', 'nickanme', true, true, true, true)
  returning id
)
insert into user_role values
  ((select id
    from inserted_user), 2),
  ((select id
    from inserted_user), 3),
  ((select id
    from inserted_user), 4)
returning user_id;

我的问题是,在我的结果中,我看到了3行具有相同ID的行(这对我的java应用程序来说是不好的,因为它需要一个号码)。我不知道如何编辑这个来得到我的结果。我试着把它包装到另一个select +许多其他或多或少愚蠢的东西中,但都没有用。你能帮帮我吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-07-09 09:56:30

对第二个INSERTSELECT DISTINCT user_id FROM使用另一个CTE。在新的CTE做一个INSERT ... SELECT FROM,旧的CTE。

代码语言:javascript
复制
WITH inserted_user
AS
(
INSERT INTO "user"
            (username,
             password,
             nickname,
             account_non_expired, 
             account_non_locked,
             credentials_non_expired,
             enabled)
            VALUES ('username',
                    'password-hash',
                    'nickanme',
                    true,
                    true,
                    true,
                    true)
            RETURNING id
),
inserted_user_role
AS
(
INSERT INTO user_role
            SELECT iu.id,
                   gs.n
                   FROM inserted_user iu
                        CROSS JOIN generate_series(2, 4) gs(n)
            RETURNING user_id
)
SELECT DISTINCT
       user_id
       FROM inserted_user_role;
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/211656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档