2012-09-19 89 views
1

我tryng提取所有對說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

回答

5

打完記錄數,只需調理的加盟,使該左邊總是等於或者小於!

select a.Id L,b.id R 
     into #cross 
     from MyTable a 
inner join mytable b on a.id <= b.id 
+0

大聲笑..我想確切的事情,但你排除,我= j的... –

+0

修正,只是您的評論之前:) – RichardTheKiwi

+0

是啊..現在都好:)))..尼斯工作。 –