假设我们有一个包含以下内容的表:
UserID, ProjectID
此表在网络分析中有另一种称为bipartite graph.
的表示我们可以使用SQL查询创建高效的one mode projection吗?
一种模式投影的示例: 假设该表是:
UserId, ProjectID
U1, P1
U2, P1
U3, P1
U4, P2
U5, P2
U1, P2
UserId
的一种模式投影是:
U1,U2
U2,U3
U3,U1
U4,U5
U4,U1
U5,U1
同样,ProjectID
的一种模式投影是:
P1,P2
答案 0 :(得分:2)
这在SQL中称为join
:
select t1.UserId, t2.UserId
from t t1 join
t t2
on t1.ProjectId = t2.ProjectId;
注意:如果您有通过多个项目连接但又不想重复的对,请使用select distinct
。
答案 1 :(得分:1)
使用以下命令使其运行得更快。通过应用WITH(NOLOCK)语句,SQL不使用任何行级锁,响应更快。
select t1.UserId, t2.UserId
from t t1 WITH (NOLOCK) join
t t2 WITH (NOLOCK)
on t1.ProjectId = t2.ProjectId;
感谢@Gordon Linoff的查询