Симметричное перекрестное соединение
Я пытаюсь извлечь всю пару, скажем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
как я могу сделать это эффективно?
EDIT
Просто для справки я сказал: «Мне нужна половина записей», что неверно, количество записей после учета того, чтоi,j == j,i
являетсяn*(n+1)/2