Select 条与另一条记录无关的记录
Select records that are not associated with the other record
嗨,我有 3 tables Modules
,Students
并加入 table(多对多)StudentModules
。我想 select 学生未注册的所有模块 for.When 学生注册信息存储在 StudentModules
table.Basically 我要 select 所有未关联的模块学号在StudentModules
table从Modules
table。
我试过下面的代码
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)
select 学生未注册的所有模块的一种可能方法,假设本例中学生编号为 48377767
:
SELECT m.*
FROM Modules m
LEFT JOIN StudentsModules sm ON sm.ModuleCode = m.ModuleCode
AND sm.StudentNo = 48377767
WHERE sm.ModuleCode IS NULL
更新:
没有JOIN
的不同方法:
SELECT m.*
FROM Modules m
WHERE m.ModuleCode NOT IN
(
SELECT ModuleCode
FROM StudentsModules
WHERE StudentNo = 48377767
)
嗨,我有 3 tables Modules
,Students
并加入 table(多对多)StudentModules
。我想 select 学生未注册的所有模块 for.When 学生注册信息存储在 StudentModules
table.Basically 我要 select 所有未关联的模块学号在StudentModules
table从Modules
table。
我试过下面的代码
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)
select 学生未注册的所有模块的一种可能方法,假设本例中学生编号为 48377767
:
SELECT m.*
FROM Modules m
LEFT JOIN StudentsModules sm ON sm.ModuleCode = m.ModuleCode
AND sm.StudentNo = 48377767
WHERE sm.ModuleCode IS NULL
更新:
没有JOIN
的不同方法:
SELECT m.*
FROM Modules m
WHERE m.ModuleCode NOT IN
(
SELECT ModuleCode
FROM StudentsModules
WHERE StudentNo = 48377767
)