不知道为什么mysql执行这两sql语句的结果不一样
因为一个人考了多门课。如果王五一门80,剩下都不及格。第一个sql会把王五排除掉。
你的not in 里面放的是一个查询sql,这个查询sql是有结果的,他跟你第二张图中查询结果的SID重复了,not in 把这些SID都给排除掉啦
【以下回答由 GPT 生成】
问题原因: 第一个SQL语句使用了子查询和"NOT EXISTS"来进行反向查询,找出在成绩表中不存在成绩大于等于60的课程ID所对应的课程表记录。这样查询出的结果是成绩都小于60分的课程表记录。
而第二个SQL语句直接使用"<"符号来进行查询,它只是简单地找出成绩小于60的课程表记录。这样查询出的结果可能包含两种情况,一种是成绩小于60的课程表记录,另一种是没有对应成绩的课程表记录。所以返回的结果会与第一个SQL语句不一样。
解决方案: 为了使第二个SQL语句能够得到和第一个SQL语句一样的结果,需要使用关联查询来实现。具体步骤如下:
下面是修改后的SQL语句示例:
SELECT DISTINCT 课程表.*
FROM 课程表
INNER JOIN 成绩表 ON 成绩表.课程ID = 课程表.课程ID
WHERE 成绩表.成绩 < 60
这样修改后的SQL语句就能够得到和第一个SQL语句相同的结果了。
【相关推荐】