加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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在这一点上无法尝试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读