我有一个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...
谢谢!
答案 0 :(得分:2)
您需要CROSS JOIN
和ROW_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
答案 1 :(得分:0)
创建第二个"查找表" user_assoc,包含三列id,user_id,user_assoc_id。
这个例子:
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
然后,您可以在user_id上的users表上运行SQL连接