我有三张 table
- 用户信息(U-id、U-name)
- 技能(S-id、S-名称) 以及它们之间的桥接表(因为它们具有多对多关系)
- 用户技能(U-id,S-id)
我想编写一个查询来查找具有相同技能的用户 例如,这是 UserSkill 表中的示例数据
U-id S-id
1 1
1 2
1 7
2 1
2 6
所以结果会是这样的
UserName1 UserName2 SkillName
A B Java
这是我的查询
{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
在最后
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
输出
UserName UserName SkillName
A B Java
现场演示
关于SQL查询查找具有相同技能的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49508834/