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,i
はn*(n+1)/2