我需要使用Inner Join连接5个表。SQL Server INNER JOIN会产生问题吗?
这是一个很好的做法还是会做在以后的几年任何不一致?
随便看看
SELECT Distinct(email)
FROM AP_GROUPS_INTO_ORGANIZATION M
INNER JOIN GROUPSDB G on G.ID = M.GROUPID
INNER JOIN aspnet_Roles r ON R.RoleName = G.GROUPNAME
INNER JOIN aspnet_UsersInRoles U ON U.RoleId = R.RoleId
INNER JOIN aspnet_membership a on a.UserId = U.UserId
WHERE G.GROUPNAME = 'GROUP001'
5'JOIN's是确定的,如果这就是你所需要的语义。我可能会更改为'WHERE EXISTS'而不是'JOIN',然后使用'DISTINCT'摆脱重复。确保您查看查询计划并在FK列上添加任何必需的索引。 – 2011-03-10 11:34:04
@Martin我会非常小心的推荐DISTINCT的使用如此自由。我已经看到了开发人员编写查询的情况,查看了一堆重复内容,只需粘在DISTINCT中即可摆脱它们而不理解正在发生的事情。我不是在这里说这种情况,但它不是我鼓励人们在没有考虑的情况下使用的。 – SecretDeveloper 2011-03-10 11:58:50
@Kaius - 我绝对不建议'DISTINCT'我说的相反,事实上,他们应该使用'WHERE EXISTS' ** **代替(尽管可能不足够强烈) – 2011-03-10 12:00:24