mysql使用select插入带有公共元素的多个记录

时间:2012-08-02 14:25:37

标签: mysql sql

我有三个表,一个User table,一个Company table和一个linking table来分配用户角色。我正在尝试更新user_role表,以便其关联公司的所有用户具有相同的角色。角色表看起来像这样:

+---------+---------+------------+
| role_id | user_id | company_id |
+---------+---------+------------+
|       2 |      54 |         30 | 
|      15 |       1 |         15 | 
|      14 |      87 |         32 | 
|      15 |      88 |         33 | 
|      15 |     106 |          3 | 
+---------+---------+------------+

我想要逻辑上做的是这样的

INSERT INTO user_role 
    (user_id, company_id, role_id) 
VALUES (
         (SELECT user_id FROM user_role WHERE company_id = ##FIRST COMPANY_ID IN LIST##), 
         (##LIST OF COMPANY_ID'S##), 2
       );

我有一个company_id的静态列表,我希望在该公司中为该公司中具有任何角色的所有用户分配一个额外的静态role_id。完成此任务的最佳方法是什么?我应该查看存储过程吗?

1 个答案:

答案 0 :(得分:0)

INSERT INTO user_role (user_id, company_id, role_id) 
SELECT user_id, company_id, { new role id here }
  FROM user_role 
 WHERE company_id in ( { list of company id's here })