[英]Delete record and all associated records, even if there are no associated records
[英]Select records that are not associated with the other record
嗨,我有3个表Modules
, Students
和连接表(多对多) 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.