2012-08-02 48 views
0

我有三個表,User tableCompany tablelinking table分配用戶角色。我正在嘗試更新user_role表,以便其關聯公司的所有用戶都具有相同的角色。角色表看起來是這樣的:mysql插入多個使用select的公共元素的記錄

+---------+---------+------------+ 
| 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。什麼是完成這個最好的方法?我應該看看存儲過程嗎?

回答

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 }) 
+0

這對小修改很有效!剛剛添加了SELECT DISTINCT!謝謝! – Adunahay 2012-08-02 15:02:48

+0

@Adunahay Doh,我應該預料到的。不用謝 :-) – 2012-08-02 15:18:31