繁体   English   中英

选择与其他记录不相关的记录

[英]Select records that are not associated with the other record

嗨,我有3个表ModulesStudents和连接表(多对多) StudentModules 。我想选择for.When学生注册信息的学生没有注册存储在所有模块StudentModules table.Basically我想选择那些不与学生号相关联的所有模块StudentModules从表Modules表。 在此处输入图片说明

我尝试了以下代码

SELECT Modules.*, Students.*
FROM            ((StudentsModules INNER JOIN
                     Modules ON StudentsModules.ModuleCode = Modules.ModuleCode) INNER JOIN
                     Students ON StudentsModules.StudentNo = Students.StudentNo)
                     Where StudentNo = 48377767 AND WHERE ModuleCode NOT IN (SELECT ModuleCode FROM StudentsModules)

您接近了,最后忘了一张支票!

编辑此部分:

NOT IN (SELECT ModuleCode FROM StudentsModules where StudentNo=48377767)

选择学生尚未注册的所有模块的一种可能方法,假设本示例中的学生编号为48377767

SELECT m.*
FROM Modules m
     LEFT JOIN StudentsModules sm ON sm.ModuleCode = m.ModuleCode 
                                     AND sm.StudentNo = 48377767
WHERE sm.ModuleCode IS NULL

[ SQL小提琴 ]

更新:

没有JOIN不同方法:

SELECT m.*
FROM Modules m
WHERE m.ModuleCode NOT IN
                   (
                      SELECT ModuleCode
                      FROM StudentsModules
                      WHERE StudentNo = 48377767
                    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM