SQL:来自2个非连接表的单选查询

时间:2010-07-15 00:25:06

标签: sql sql-server tsql

我有2个表没有任何相互引用,我正在尝试通过从两个表中的字段中选择来创建第三个表(用于参考查找)。

TableA has an A_ID
TableB has a B_ID

我想创建表C,其在A_ID到B_ID之间具有1对1的引用 其中A_ID = FirstID和B_ID = SecondID,我无法加入2个表,因为没有任何共同点。

类似的东西:

Insert INTO [TableC]
(FirstID, SecondID)
SELECT
A_ID As FirstID,
(Select B_ID From TableB)
FROM TableA

基本上我们现在正在使用表C创建一个关系,以便我们可以使用它来使用它们的ID来引用这两个表。

1 个答案:

答案 0 :(得分:8)

假设TableA和TableB没有任何共同之处,那么你想要的就是笛卡尔积,也就是说,对于B中每一行A次的每一行。

INSERT INTO TableC(FirstID,SecondID)
SELECT A_ID,B_ID
FROM TableA
CROSS JOIN TableB

也许您真正想要的是通过ROW_NUMBER()加入它们。

INSERT INTO TableC(FirstID,SecondID)
SELECT A_ID,B_ID
FROM (SELECT A_ID,ROW_NUMBER() OVER (ORDER BY whatever) as rownumA FROM TableA) a
FULL OUTER JOIN (SELECT B_ID,ROW_NUMBER() OVER (ORDER BY whatever) as rownumB FROM TableB) b ON a.rownumA=b.rownumB
相关问题