sql – 获取连接的倒数?
发布时间:2020-12-12 16:42:20 所属栏目:MsSql教程 来源:网络整理
导读:我使用SQL Server 2005.我有三个表 – 用户,组和组用户. GroupUsers包含两对多关系的两个PK. 我想获得一个组的所有用户信息,如下所示: SELECT * FROM GroupUsers JOIN Users ON GroupUsers.UserID = Users.UserId 我想创建这个视图的倒数 – 我想要一个没有
我使用SQL Server 2005.我有三个表 – 用户,组和组用户. GroupUsers包含两对多关系的两个PK.
我想获得一个组的所有用户信息,如下所示: SELECT * FROM GroupUsers JOIN Users ON GroupUsers.UserID = Users.UserId 我想创建这个视图的倒数 – 我想要一个没有附加到特定组的所有用户的列表.以下查询将完成此操作: SELECT * FROM Users WHERE UserID NOT IN (SELECT UserID FROM GroupUsers WHERE GroupID=@GroupID) 但是,我不想指定该组,我想知道如何将其转换为加入GroupID,然后连接UsersID和所有用户信息的视图,但仅适用于非附件用户. 我不知道该怎么做,也许与EXCEPT运算符有什么关系? 更新: 我认为这是我的解决方案,除非有人想出更好的东西: SELECT G.GroupId,U.* FROM Groups G CROSS JOIN Users U WHERE U.UserId NOT IN ( SELECT UserId FROM GroupUsers WHERE GroupId=G.GroupId ) 解决方法如果我理解正确,你将不得不做一个卡特彼勒的结果.组并减少从GroupUsers派生的结果.这将为您提供没有附加任何组的用户的记录. 编辑:笛卡尔结果将给您的用户*组.您将不得不从其中减去GroupUsers.对不起,我没有准备好SQL在这一点上无法尝试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |