具体问题是列出从未评分过的教师的姓名.
我有"老师"表,其中包含"名称"和"ID"列.
并且'成绩'表格中包含"IDTeacher"和"成绩"列.
不明白为什么这不起作用:
Select Name from teachers where not exists(Select * from grades, teachers)
Run Code Online (Sandbox Code Playgroud)
您可以将它与成绩表一起使用,并使用连接为右侧返回"null"的那些:
SELECT
name
from
teachers t
LEFT JOIN
grades g
on
t.teacher = g.teacher
WHERE
ISNULL(g.teacher)
Run Code Online (Sandbox Code Playgroud)
编辑:如果教师在成绩表中没有条目,则考虑右键加入,但不是,正确的加入可能不起作用.(然后你会完全想念他,即使他在teacher桌子里)
你也可以使用WHERE IN这个:
SELECT
name
FROM
teachers
WHERE
name
NOT IN (SELECT name from grades)
Run Code Online (Sandbox Code Playgroud)
但是,MySQL Optimizer会将其重写为@Gordon Linoff编写的相关子查询.使用WHERE NOT IN更容易阅读imho.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |