复杂/简单SQL插入:添加多行

时间:2010-01-13 19:53:20

标签: sql mysql

我有一张表将校长连接到他们的角色。我遇到了需要为每个用户添加角色的情况。我有一个声明SELECT id FROM principals,它可以获取所有主体的列表。我想要创建的内容如下:

INSERT INTO role_principal(principal_id,role_id)
VALUES(SELECT id FROM principals, '1');

因此,对于每个主体,它会创建一个role_id = 1的新记录。我的SQL经验非常少,所以我不知道我是否可以像我想的那样简单地执行此操作,或者在SQL中是否存在某种我可以使用的循环功能。

此外,这是针对mySQL数据库(如果重要)

2 个答案:

答案 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) )