PTT*_*TTT 5 sql t-sql sql-server
我有三张桌子
我想编写一个查询来查找具有相同技能的用户,例如这是 UserSkill 表中的示例数据
U-id S-id
1 1
1 2
1 7
2 1
2 6
Run Code Online (Sandbox Code Playgroud)
所以结果会是这样的
UserName1 UserName2 SkillName
A B Java
Run Code Online (Sandbox Code Playgroud)
这是我的查询
{select ui.UserName,ui2.UserName,SkillName
from
UserSkill us1 inner join UserSkill us2
on us1.SkillID = us2.SkillID and us1.UserID <> us2.UserID
inner join UsersINFO UI
on ui.UserID = us1.UserID
inner join UsersINFO ui2
on ui2.UserID = us2.UserID
inner join Skill s
on s.SkillID = us2.SkillID}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人知道更好的编写查询的方法
Where ui.UserName<ui2.UserName
你只需要在最后添加
select ui.UserName,ui2.UserName,SkillName
from
UserSkill us1 inner join UserSkill us2
on us1.SkillID = us2.SkillID and us1.UserID <> us2.UserID
inner join UsersINFO UI
on ui.UserID = us1.UserID
inner join UsersINFO ui2
on ui2.UserID = us2.UserID
inner join Skill s
on s.SkillID = us2.SkillID
Where ui.UserName<ui2.UserName
Run Code Online (Sandbox Code Playgroud)
输出
UserName UserName SkillName
A B Java
Run Code Online (Sandbox Code Playgroud)
现场演示