我在 SQL Server 中有一个表来记录我网站所有成员登录的 IP。
ID MEMBER IP
---------------------------------------
1 member1 1.1.1.1
2 member2 2.2.2.2
3 member3 1.1.1.1
4 member3 3.3.3.3
5 member4 3.3.3.3
我想找出一种搜索关联成员及其关联 IP 的方法。
第一个例子,
- member1 之前从 1.1.1.1 登录
- member3 之前从 1.1.1.1 和 3.3.3.3 登录
- member4 之前从 3.3.3.3 登录
因此,对于成员 1:
- 关联成员:member1、member3、member4
- 关联 IP:1.1.1.1、3.3.3.3
对于 member2,关联成员为 member2,关联 IP 为 2.2.2.2。
这个协会系统是为了帮助管理假玩家,成员数量很大(~100k)。所以加载时间是个大问题。
我的问题:
- 是否有 SQL 查询来生成关联成员和关联 IP 的列表?
=======要测试的表======
CREATE TABLE [dbo].[tblAssociation](
[ID] [int] NULL,
[Member] [nvarchar](50) NULL,
[IP] [nvarchar](50) NULL
) ON [PRIMARY]
GO
INSERT INTO [tblAssociation] VALUES(1,'member1','1.1.1.1')
INSERT INTO [tblAssociation] VALUES(2,'member2','2.2.2.2')
INSERT INTO [tblAssociation] VALUES(3,'member3','1.1.1.1')
INSERT INTO [tblAssociation] VALUES(4,'member3','3.3.3.3')
INSERT INTO [tblAssociation] VALUES(5,'member4','3.3.3.3')
======香卡的建议====
SELECT T1.Member, T1.IP, T2.Member
FROM tblAssociation T1
INNER JOIN tblAssociation T2 ON T1.IP = T2.IP
AND T1.Member = 'member1'
如果你尝试,我只能得到关联成员 = member1,member3。
member4 不存在,但他应该是关联的,因为 member4 和 member3 之前连接到 3.3.3.3