我有 2 个完全不相关的表,我需要将它们放在一起 - 每个表一列。当我尝试笛卡尔连接时,我最终得到了每种组合:
SELECT Field1, Field2 FROM Table1, Table2
结果:
Table1.Field1 Table2.Field2
---------------------------
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
我需要它并排返回:
Table1.Field1 Table2.Field2
---------------------------
1 1
2 2
3 3
这可能吗?提前致谢
编辑
Table1.Table1IDs
----------------
1
2
3
4
5
Table2.Table2IDs
----------------
6
7
8
9
10
所需的输出(进入临时表/选择语句)
Table1.Table1IDs Table2.Table2IDs
------------------------------------
1 6
2 7
3 8
4 9
5 10
这样我就可以将我的插入到我需要插入的实际表中:
INSERT INTO dbo.MTMObjects
SELECT Table1IDs, Table2IDs
FROM [temp table or solution]
回答 Bluefeet 让我想到了使用带有标识列的临时表,然后我可以使用它来加入。他是“更安全”的,因为您不依赖 SQL 的幽默来对两个记录集进行相同的排序,但这可能会帮助下一个人:
DECLARE @tmp_Table1 TABLE(ID int IDENTITY(1,1) NOT NULL, TableID1 int NOT NULL)
DECLARE @tmp_Table2 TABLE(ID int IDENTITY(1,1) NOT NULL, TableID2 int NOT NULL)
INSERT INTO @tmp_Table1
OUTPUT INSERTED.Field1
SELECT * FROM Table1
INSERT INTO @tmp_Table2
OUTPUT INSERTED.Field2
SELECT * FROM Table2
OUTPUT
SELECT tmp1.Field1, tmp2.Field2
FROM @tmp_Table1 tmp1 INNER JOIN @tmp_Table2 tmp2 ON tmp2.ID = tmp1.ID
干杯!