2014-02-19 19 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列,那么怎么实现呢。 –

相关问题