使用增量编号将每个记录链接到所有其他记录

时间:2015-08-20 15:32:03

标签: sql-server

我有一个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 个答案:

答案 0 :(得分: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

答案 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连接