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,技术上比不在方法更安全:)谢谢大家的帮助。谢谢大家的帮助。