首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSQL Insert多行from select语句带子查询和1个值

MSQL Insert多行from select语句带子查询和1个值
EN

Stack Overflow用户
提问于 2021-06-22 19:24:44
回答 1查看 22关注 0票数 0

我想在我的表中插入新数据,条件是我从子查询here表中获得的条件:

权限

代码语言:javascript
复制
role_id     permission_id
   1              1
   1              2
   1              3
   2              1
   2              3
   3              1
   3              2
   4              1

因此,假设role_id是一组id,它们具有多个连接的权限id。所以我想插入权限id为2的新数据,它们是role_id 2和4

我想运行这个查询:

代码语言:javascript
复制
INSERT INTO PERMISSION
VALUES ('2', '2')
VALUES ('4', '2');

在1个查询中,我尝试运行以下查询:

代码语言:javascript
复制
INSERT INTO permission(role_id, permission_id)
VALUES( 
    (select distinct(role_id) from role_permission rp2 
    where role_id NOT IN (
    select role_id from role_permission rp
    where permission_id = 2)),
    2);

但结果是它总是得到错误:

代码语言:javascript
复制
SQL Error [1242] [21000]: Subquery returns more than 1 row

有没有办法用mysql插入带有1个值的多个查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-22 19:25:52

您的第一个查询缺少逗号并重复VALUES。我还建议列出这些列

代码语言:javascript
复制
INSERT INTO PERMISSION (role_id, permission_id)
    VALUES ('2', '2'),
           ('4', '2');

请注意,ids通常是数字。如果是这种情况,则删除单引号。

对于第二个查询,使用INSERT . . . SELECT

代码语言:javascript
复制
INSERT INTO permission (role_id, permission_id)
    select rp.role_id, 2
    from role_permission rp
    group by rp.role_id
    having sum(rp.permission_id = 2) = 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68082689

复制
相关文章

相似问题

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