1

まったく関係のない 2 つのテーブルがあり、それらをまとめる必要があります (テーブルごとに 1 列)。デカルト結合を試すと、すべての組み合わせになります。

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

必要な出力 (一時テーブル/select ステートメントへ)

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]

ANSWER Bluefeet は、結合に使用できる ID 列を持つ一時テーブルを使用するというアイデアを私に与えてくれました。両方のレコードセットを同じようにソートするために 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

乾杯!

4

3 に答える 3

5

を使用して、このようなことを試すことができますrow_number()row_numberこれにより、 :に基づいて2つのテーブル間の関係が強制されます。

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

SQL FiddlewithDemoを参照してください

于 2012-09-21T20:43:16.633 に答える
0

テーブルの行数がまったく同じでない場合は、内部結合ではなく外部結合を使用するように最終的なソリューションを変更する必要があります。

于 2012-09-21T21:14:23.293 に答える
0

私が理解した場合...必要なのは、where句にフィルターを追加することだけです

SELECT Field1, Field2 FROM Table1, Table2 WHERE Table1.Field1=Table2.Field2
于 2012-09-21T20:13:29.173 に答える