SQL Server 2008 - 需要帮助合并2个表(笛卡儿)

Los*_*ear 1 sql t-sql sql-server sql-server-2008

我有两个完全不相关的表,我需要把它们放在一起 - 每个表一列.当我尝试笛卡尔联合时,我最终得到了所有组合:

SELECT Field1, Field2 FROM Table1, Table2
Run Code Online (Sandbox Code Playgroud)

结果:

Table1.Field1 Table2.Field2
---------------------------
1             1
1             2
1             3 
2             1
2             2
2             3
3             1
3             2
3             3
Run Code Online (Sandbox Code Playgroud)

我需要它并排返回:

Table1.Field1 Table2.Field2
---------------------------
1             1
2             2
3             3 
Run Code Online (Sandbox Code Playgroud)

这可能吗?提前致谢

编辑

Table1.Table1IDs
----------------
1
2
3
4
5

Table2.Table2IDs
----------------
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)

期望的输出(进入临时表/选择语句)

Table1.Table1IDs    Table2.Table2IDs
------------------------------------
1                   6
2                   7
3                   8
4                   9
5                   10
Run Code Online (Sandbox Code Playgroud)

这样我就可以将插入到实际的表中,我需要进行插入:

INSERT INTO dbo.MTMObjects
    SELECT Table1IDs, Table2IDs 
    FROM [temp table or solution]
Run Code Online (Sandbox Code Playgroud)

ANSWER 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
Run Code Online (Sandbox Code Playgroud)

干杯!

Tar*_*ryn 5

你可以尝试使用这样的东西row_number().这将强制基于以下两个表之间的关系row_number:

select t1.col1, t2.col2
from
(
  select col1, row_number() over(order by col1) rn
  from table1
) t1
inner join
(
  select col2, row_number() over(order by col2) rn
  from table2
) t2
  on t1.rn = t2.rn
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo