4

2つの一時テーブル#aと#bがあり、どちらも整数値で埋められています。両方に値が1〜10の10行が含まれているとします。

aとbの可能なすべての組み合わせを含む3番目の一時テーブル#cを作成したいと思います。したがって、(1,1)、(1,2)...(10、10)の合計100行になります。SQLでこれを行うにはどうすればよいですか。私が使用している実装はSQLServer2012です。

4

4 に答える 4

8

クロスジョインはすべての組み合わせを取得します

SELECT a.Col
, b.Col
FROM TableA a
CROSS JOIN TableB b
于 2012-10-24T19:56:41.027 に答える
4

私はあなたがただできると思います

SELECT * INTO #c FROM #a,#b
于 2012-10-24T19:55:12.913 に答える
1
BEGIN
DECLARE @a TABLE(x INT)
DECLARE @b TABLE(x INT)
INSERT INTO @a VALUES (1), (2)
INSERT INTO @b VALUES (1), (2)
select * from @a,@b
END
于 2012-10-24T19:56:09.707 に答える
1

ここには確かに他の正しい答えがありますが、質問に完全に答えるために、それらの最良の要素を一緒に追加します。

select a.Col as ColA    -- Give the columns a name for the destination
    , b.Col as ColB
into #c                 -- Generates destination temp table #c
from #a as a
    cross join #b as b  -- Cross join is the preferred syntax
order by a.Col, b.Col   -- Optional but often helpful (aesthetic, identities, indexing, etc)

そうです、デカルト積が必要な場合は、cross joinを使用してください。

于 2012-10-24T20:14:19.753 に答える