2013-08-22 124 views
0

我有称为3个表:表A,表B,TPopulate填充表具有两个MySQL循环

的表:A,B有一些行我需要populare表(TPopulate),而不存储的过程实施例的伪代码:

@loop1 = 1; 
@loop2 = 1; 
WHILE loop1 <= (Select COUNT(*) FROM TableA) 
    WHILE loop2 <= (Select COUNT(*) FROM TableB) 
     INSERT INTO TPopulate (column1, column2) VALUES (TableA.column1, TableB.column1) 
    END; 
END; 

TableA Represent (users) 
TableB Represent (Privileges) 
TPopulate Represent (Users_Privileges) 

我试图做的是将所有权限插入所有现有用户。

回答

1

根本不需要使用循环。在使用关系数据库时,您应该考虑SETS。

以下是实现此目的的正确方法。首先使用CROSS JOIN创建来自tableA和tableB的所有ID组合的笛卡尔组。然后插入整个集合到TPopulate

INSERT INTO TPopulate (column1, column2) 
SELECT T1.PKField 
     ,T2.PKField 
FROM TableA T1 
CROSS JOIN 
     TableB T2 
+0

简单而高效,非常感谢你你帮我 –