2013-05-06 45 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 
相关问题