SELECT Sno FROM GRADE GROUP BY Sno HAVING MIN(grades)>80为什么得到的是空而SELECT Sno FROM GRADE WHERE grades>80 GROUP BY Sno HAVING MIN(grades)>80得到的有正确的值
时间: 2024-01-24 07:19:05 浏览: 132
第二次上机实验报告1
这是因为这两个SQL语句的查询条件不同。
第一个SQL语句中,先使用了GROUP BY对Sno进行分组,然后使用HAVING筛选出分组后最小的成绩大于80的Sno。但是,如果某个学生没有成绩大于80分,则该学生将不会出现在结果中,因为该分组的最小成绩为小于或等于80分。
而第二个SQL语句中,先使用了WHERE筛选出成绩大于80分的学生,然后再对这些学生进行分组,并使用HAVING筛选出分组后最小的成绩大于80分的Sno。因此,如果某个学生没有成绩大于80分,则该学生也会出现在结果中,但是该学生的最小成绩将小于或等于80分,不符合HAVING的筛选条件,因此该Sno不会出现在结果中。
因此,这两个SQL语句的查询结果不同,第一个SQL语句得到的结果为空,而第二个SQL语句得到的结果可能包含一些不符合条件的Sno。
阅读全文