2014-02-19 20 views
0

表的用戶,如下我想在MySQL存儲過程拆分逗號單獨的值,則每個值插入到另一個表

-------------------- 
portal_id | user_id 
1  | 100 
1  | 101 
1  | 102 
1  | 103 
--------------------- 

SELECT group_concat(user_id) as toUserIds FROM users where portal_id=1; 

我得到的toUserIds後100,101,102,103

後,我想插入doc_user_xref表作爲(相同的文檔ID與不同的用戶ID)

insert into doc_user_xref(doc_id,user_id)values(5211,100); 
insert into doc_user_xref(doc_id,user_id)values(5211,101); 
insert into doc_user_xref(doc_id,user_id)values(5211,102); 
insert into doc_user_xref(doc_id,user_id)values(5211,103); 

在上面的插入值我需要循環或迭代器。

回答

0

不要使用GROUP_CONCAT(),只需使用INSERT ... SELECT

INSERT INTO doc_user_xref 
    (doc_id, user_id) 
SELECT 5211, user_id 
FROM users 
WHERE portal_id = 1 
+0

我想在很多地方使用我所附加的表和查詢的簡化模型不準確完整的模型上面的問題。我想循環或迭代器模型eggyal。 –

+0

@KrishnaS:SQL的設計並非真正用於處理「循環」和「迭代器」 - 它專爲處理集合而設計。幾乎所有可能對數據執行的操作(無論多麼複雜)都可以使用SQL中的強大集合操作來簡潔表達。正如你所問,這個答案是正確的解決方案。如果您的實際問題更復雜,您需要解釋爲什麼這個解決方案不適用,以便人們可以幫助您找到正確的SQL集操作來解決它。 – eggyal

+0

首先我感謝你,我搞糊塗以下查詢,「INSERT INTO doc_user_xref(doc_id,user_id)SELECT docId,user_id FROM users WHERE portal_id = 1」docId已經聲明並從另一個表中獲取數據,所以我使用select用戶表沒有docId列,那麼怎麼實現呢。 –

相關問題