Symmetrische Kreuzverbindung
Ich versuche, alle Paare zu extrahiereni,j
von jedem Element in einer Tabelle gegen jedes Element in der gleichen Tabelle, hier meine Abfrage:
select a.Id L,b.id R into #cross from MyTable a cross join mytable b
Ich bin in der Situation, woi,j == j,i
es wird also nur die Hälfte des Datensatzes benötigt. Mein naiver Versuch ist:
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)
Aber ich kann die Zieltabelle beim Einfügen nicht abfragen, wie von SQL Server gesagt:
The SELECT INTO statement cannot have same source and destination tables
Wie kann ich effizient vorgehen?
BEARBEITEN Nur als Referenz sagte ich "Ich brauche die Hälfte der Datensätze", das ist falsch, die Anzahl der Datensätze nach Berücksichtigungi,j == j,i
istn*(n+1)/2