SQL Server-查询帮助

SQL Server-查询帮助,sql,sql-server,Sql,Sql Server,我有以下三张桌子 Teams (TeamID int, TeamName varchar(200)) - TeamID is identity col Users (UserID int, Username varchar(200)) - UserID is identity col UsersTeams (ID int, UserID int, TeamID int) - Table has FK references to the 2 tables above UsersTeams表用于记

我有以下三张桌子

Teams (TeamID int, TeamName varchar(200)) - TeamID is identity col
Users (UserID int, Username varchar(200)) - UserID is identity col
UsersTeams (ID int, UserID int, TeamID int) - Table has FK references to the 2 tables above
UsersTeams表用于记录用户所属的所有团队。 我想找到一种方法,在给定用户id的情况下,列出一个用户不是其成员的所有团队

有人能帮忙吗


关于您可以使用
不存在

DECLARE @UserID INT;

SET @UserID = 1;

SELECT
  *
FROM Teams
WHERE TeamID NOT IN (SELECT TeamID FROM UserTeams WHERE UserID = @UserID)
select  *
from    teams t
where   not exists
        (
        select  *
        from    UserTeams ut
        join    User u
        on      u.UserId = ut.UserId
        where   t.TeamId = ut.TeamID
                and Users.Username = 'TheUser'
        )

您可以使用
不存在

select  *
from    teams t
where   not exists
        (
        select  *
        from    UserTeams ut
        join    User u
        on      u.UserId = ut.UserId
        where   t.TeamId = ut.TeamID
                and Users.Username = 'TheUser'
        )
具有条件的联接可能会执行得更好

DECLARE @UserID INT
SET @UserID = 1   

SELECT Teams.TeamID, Teams.TeamName FROM Teams
INNER JOIN UsersTeams 
ON Teams.TeamID <> UsersTeams.TeamID
WHERE UsersTeams.UserID = @UserID
DECLARE@UserID INT
设置@UserID=1
从团队中选择Teams.TeamID、Teams.TeamName
内部连接用户流
在Teams.TeamID UsersTeams.TeamID上
其中userstreams.UserID=@UserID
具有条件的联接可能会执行得更好

DECLARE @UserID INT
SET @UserID = 1   

SELECT Teams.TeamID, Teams.TeamName FROM Teams
INNER JOIN UsersTeams 
ON Teams.TeamID <> UsersTeams.TeamID
WHERE UsersTeams.UserID = @UserID
DECLARE@UserID INT
设置@UserID=1
从团队中选择Teams.TeamID、Teams.TeamName
内部连接用户流
在Teams.TeamID UsersTeams.TeamID上
其中userstreams.UserID=@UserID

由于我们没有DDL,技术上比不在方法更安全:)由于我们没有DDL,技术上比不在方法更安全:)谢谢大家的帮助。谢谢大家的帮助。