我想在我的表中插入新数据,条件是我从子查询这里得到的表示例:
权限
role_id permission_id
1 1
1 2
1 3
2 1
2 3
3 1
3 2
4 1
所以,假设 role_id 是一组 id,它具有多个连接的权限 id。 所以我想插入新数据,role_id 没有权限 id 2。它们是 role_id 2 和 4
我想运行这个查询:
INSERT INTO PERMISSION
VALUES ('2', '2')
VALUES ('4', '2');
在 1 个查询中,我尝试运行此查询:
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);
但结果总是出错:
SQL Error [1242] [21000]: Subquery returns more than 1 row
有什么方法可以使用 mysql 插入具有 1 个值的多个查询组合吗?
答案 0 :(得分:0)
您的第一个查询缺少逗号并重复 VALUES
。我还建议列出列
INSERT INTO PERMISSION (role_id, permission_id)
VALUES ('2', '2'),
('4', '2');
请注意,id 通常是数字。如果是这种情况,请删除单引号。
对于第二个查询,使用 INSERT . . . SELECT
"
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;