我正在尝试在我的链接表 userGroup 上加入表组,以获取 id 为 30 的用户不是成员的组,但我似乎无法正确处理。
无条件加入返回此
SELECT Groups.ID, Groups.Name, UserGroup.groupID, UserGroup.userID
FROM Groups LEFT OUTER JOIN UserGroup ON Groups.ID = UserGroup.groupID
+----------+------------+---------+-- -------------+ | 组.ID | 组名 | 用户组.GroupID | 用户组.用户 ID | +----------+------------+---------+-- -------------+ | 1 | g1 | 1 | 30 | | 2 | g2 | 空 | 空 | +----------+------------+---------+-- -------------+
但是,当我尝试找出 userID = 30 的行时,我得到了两个同样错误的结果。在连接部分添加条件会返回两行,但声称 userGroup.userId 为空。我怀疑由于加入而导致一些重复的行,但无法弄清楚究竟是什么以及如何修复它
SELECT Groups.ID, Groups.Name, UserGroup.groupID, UserGroup.userID
FROM Groups LEFT OUTER JOIN UserGroup ON Groups.ID = UserGroup.groupID AND UserGroup.userID <> 30
+----------+------------+---------+-- -------------+ | 组.ID | 组名 | 用户组.GroupID | 用户组.用户 ID | +----------+------------+---------+-- -------------+ | 1 | g1 | 空 | 空 | | 2 | g2 | 空 | 空 | +----------+------------+---------+-- -------------+
将条件添加到我的语句的最后,返回 0 行。
SELECT Groups.ID, Groups.Name, UserGroup.groupID, UserGroup.userID
FROM Groups LEFT OUTER JOIN UserGroup ON Groups.ID = UserGroup.groupID
WHERE UserGroup.userID <> 30
我在 mssql 服务器上运行并使用 c# SqlCommand 执行查询,但我认为这与问题无关