2014-02-11 98 views
0

我有3个表,USER,ROLEUSER_ROLE将数据插入到连接表中

USER_ROLEUSERROLE之间的连接表,看起来像这样:

USER_ID | ROLE_ID 
1  | 1 
1  | 2 
2  | 1 
2  | 2 
... 

我想写一些的SQL插入每一个角色一次为每个用户。我如何去做这件事?

回答

1

为此,您可以用交叉联接:

insert into user_role(user_id, role_id) 
    select u.user_id, r.role_id 
    from user u cross join role r; 
+0

感谢您的。也注意到它似乎作为'...从用户u,角色r'没有'交叉连接'。它们是否相同? – rcgeorge23

+0

这是一个隐式的交叉连接。答案是明确的。 – Mihai

+0

@ rcgeorge23。 。 。 ','相当于一个'交叉连接'。但是,在我看来,'from'子句不应该包含逗号,所以'cross join'更好。 –