在SQL中检索非相关记录

时间:2016-10-19 18:51:20

标签: sql-server database

我在数据库中有两个表

1-文件表:    字段:

  • FILE_ID
  • 文件名

2-用户表:

  • USER_ID
  • 用户名

现在我有了第3个表,它是“文件已分配”,它保存了哪些文件被分配给哪些用户的轨道。

字段:

  • FILE_ID
  • USER_ID
  • 日期

我想检索所有不相关的记录,即检索未分配给特定文件的所有用户。

这是我对相关记录的查询。

从用户i中选择* 加入FileRequested r 在i.UserID = r.UserID上 其中r.File_ID = 1175

现在我想要检索未分配给该文件的所有用户

问题:可以将一个文件分配给多个用户。 我尝试过以下查询但是没有用

从用户i中选择* 加入FileRequested r 在i.UserID = r.UserID上 其中r.File_ID!= 1175或r.File_ID为空

2 个答案:

答案 0 :(得分:1)

如果我能正确理解,您可以将NOT IN与子查询一起使用:

SELECT *
FROM User i
WHERE i.UserID NOT IN (SELECT UserID 
                       FROM FileAssigned 
                       WHERE File_ID = 1175)

答案 1 :(得分:1)

SELECT * From Users as a
Where not exists(select 1 
                 from FileAssigned as b 
                 Where b.UserID=a.UserID)