我有一张表将校长连接到他们的角色。我遇到了需要为每个用户添加角色的情况。我有一个声明SELECT id FROM principals
,它可以获取所有主体的列表。我想要创建的内容如下:
INSERT INTO role_principal(principal_id,role_id) VALUES(SELECT id FROM principals, '1');
因此,对于每个主体,它会创建一个role_id = 1的新记录。我的SQL经验非常少,所以我不知道我是否可以像我想的那样简单地执行此操作,或者在SQL中是否存在某种我可以使用的循环功能。
此外,这是针对mySQL数据库(如果重要)
答案 0 :(得分:10)
如果要直接插入值,请使用VALUES
关键字。省略它以使用任何SELECT
(其中列数和类型匹配)来获取值。
INSERT INTO role_principal(principal_id,role_id)
(SELECT id, 1 FROM principals);
答案 1 :(得分:1)
为避免重复,添加子查询非常有用:
INSERT INTO role_principal(principal_id,role_id) (SELECT id,1 FROM principals p 什么不存在 (SELECT * FROM role_principal rp WHERE rp.principal_id = p.id AND role_id = 1) )