2013-05-06 50 views
0

我試圖想出一個SQL查詢,我可以很容易地在代碼中做,但在SQL中對我來說真的很陌生。SQL查詢從表A中爲表B中的每個ID獲取所有ID並插入到表C中?

因爲我想盡可能地通用,我寫出來的僞代碼:

foreach (record in TableA) 
    foreach (record in TableB) 
     var newRecord = new record(TableA.id, TableB.id) 
     TableC.Add(newRecord) // TableC.id is autoincremented 
    end foreach 
end foreach 

我會使用循環或是否有更好的方式來做到這一點?我正在使用SQL Server 2008.謝謝。

回答

8

你想根據集思考。您正在查找的操作是cross join。這將產生來自這兩個表的每個組合(笛卡爾積):

select a.id, b.id 
from A cross join B 

要插入到這個表中,然後你可以使用insert

insert into c(aid, bid) 
    select a.id, b.id 
    from A cross join B 
0

也許這樣的:

INSERT INTO TableC (ColumnA, ColumnB, ...) 
SELECT A.something, B.somethingElse 
FROM TableA A 
INNER JOIN TableB B ON A.someKey = B.anotherKey 
WHERE something = aValue 
相關問題