0

我正在尝试提出一个我可以在代码中轻松完成但在 SQL 中对我来说真的很陌生的 SQL 查询。

由于我想尽可能通用,所以我写出了伪代码:

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

我会使用 WHILE 循环还是有更好的方法来完成这个?我正在使用 SQL Server 2008。谢谢。

4

2 回答 2

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
于 2013-05-06T18:54:39.167 回答
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
于 2013-05-06T18:56:38.510 回答