2013-08-22 62 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

簡單而高效,非常感謝你你幫我 –