SQL Server在同一个表上多对多如何加入和查询

时间:2015-02-18 12:50:01

标签: sql-server

我在2表之间有以下关系。

enter image description here

两个表之间存在多对多的关系。(BigGroups中有2个外键指向表组中的GroupId)

SELECT GroupName FROM Groups where GroupId IN
  (SELECT bg.AssociatedGroupId 
    FROM BigGroups bg INNER JOIN Groups g ON bg.GroupId=g.GroupId 
    WHERE bg.GroupId=@GroupId)

此查询返回了我正在寻找的内容,但我相信可能有更好的方法(更好的性能)。或许我应该改变关系?

1 个答案:

答案 0 :(得分:0)

如果我已经正确阅读,那么您正在为@GroupId参数寻找AssociatedGroups的GroupName?这是一个更简洁的查询来实现同样的目的。

SELECT g.GroupName 
FROM BigGroups bg 
INNER JOIN Groups g ON g.GroupId = bg.AssociatedGroupId
WHERE bg.GroupId = @GroupId

这种关系没有错,虽然我认为它是1对多的; 1个组可以有零个或多个关联组。