SQL查询从表A中获取表B中每个id的所有id并插入表C?

Smi*_*ith 0 sql sql-server-2008

我正在尝试提出一个我可以在代码中轻松完成的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
Run Code Online (Sandbox Code Playgroud)

我会使用WHILE循环还是有更好的方法来实现这一目标?我正在使用SQL Server 2008.谢谢.

Gor*_*off 8

你想从集合的角度思考.您正在寻找的操作是cross join.这产生了两个表(笛卡尔积)的每个组合:

select a.id, b.id
from A cross join B
Run Code Online (Sandbox Code Playgroud)

要将其插入表中,您可以使用insert:

insert into c(aid, bid)
    select a.id, b.id
    from A cross join B
Run Code Online (Sandbox Code Playgroud)