我有两张表,学生和学校。
学生
stid | stname | schid | status
学校
schid | schname
Status 对于临时学生来说可以是很多东西,但是对于永久学生来说是 NULL
。
如何列出没有临时学生的学校名称?
最佳答案
使用条件聚合
,您可以计算每个学校
中永久学生
的数量。
如果一所学校的总人数与学校的条件人数相同,则该学校没有任何临时学生
。
使用JOIN
SELECT sc.schid,
sc.schname
FROM student s
JOIN school sc
ON s.schid = sc.schid
GROUP BY sc.schid,
sc.schname
HAVING( CASE WHEN status IS NULL THEN 1 END ) = Count(*)
另一种使用EXISTS
的方法
SELECT sc.schid,
sc.schname
FROM school sc
WHERE EXISTS (SELECT 1
FROM student s
WHERE s.schid = sc.schid
HAVING( CASE WHEN status IS NULL THEN 1 END ) = Count(*))
关于使用 NULL 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822621/