3

i,j同じテーブルの各要素に対して、テーブルの各要素からすべてのペアを抽出しようとしています。ここで私のクエリは次のとおりです。

select a.Id L,b.id R into #cross from MyTable a cross join mytable b 

i,j == j,iレコードの半分だけが必要な状況です。私の素朴な試みは次のとおりです。

select a.Id L,b.id R into #cross from MyTable a cross join mytable b 
where not exists
    (select * from #cross c where c.L=R and c.R=L)

しかし、SQL Server で述べられているように、挿入中に宛先テーブルをクエリすることはできません。

The SELECT INTO statement cannot have same source and destination tables

どうすれば効率的にできますか?

編集 参考までに、「レコードの半分が必要」と言ったのは間違っています。それを考慮した後のレコード数i,j == j,in*(n+1)/2

4

1 に答える 1

7

したがって、左側が常に等しいかそれ以下になるように結合を調整するだけです!

    select a.Id L,b.id R
      into #cross
      from MyTable a
inner join mytable b on a.id <= b.id
于 2012-09-19T07:31:45.080 に答える