2015-08-20 26 views
0

我有一個SQL Server 2008R2表,其中包含一些用戶名。我需要在每個用戶和每個其他用戶之間創建一個關聯,我不知道如何通過連接完成此操作。作爲額外的皺紋,我還需要獲得增量的唯一ID。例如,我有這樣的數據:將每條記錄鏈接到增量編號的所有其他記錄

user_a User Name A 
user_b User Name B 
user_c User Name C 

我想運行一個查詢,並得到類似以下內容:

1 user_a user_a 
2 user_a user_b 
3 user_a user_c 
4 user_b user_a 
5 user_b user_b 
6 user_b user_c 
7 user_c user_a 
etc... 

謝謝!

回答

2

你需要一個CROSS JOINROW_NUMBER()

SELECT ROW_NUMBER() OVER(ORDER BY A.col1, B.col1) UniqueID, 
     A.col1, 
     B.col1 
FROM dbo.YourTable A 
CROSS JOIN dbo.YourTable B 
ORDER BY A.col1, B.col1 
+0

真棒!很好,謝謝...只要它讓我接受這個答案就可以。 – Caynadian

0

有三列ID,USER_ID,user_assoc_id創建第二個 「查找表」 user_assoc。

這個例子:

 
1 user_a user_a 
2 user_a user_b 
3 user_a user_c 
4 user_b user_a 
5 user_b user_b 
6 user_b user_c 
7 user_c user_a 
etc... 

會變成:

 
1 1 1 
2 1 2 
3 1 3 
4 2 1 
5 2 2 
6 2 3 
7 3 1 
8 3 2 
9 3 3 

然後你可以運行在您的用戶表中的SQL連接上USER_ID

+1

謝謝,但我仍然需要使用@Lamak在下面顯示的查詢來創建第二個表,並且該查詢沒有真正需要額外的表。 – Caynadian

相關問題