获取行值仅在特定列的值不存在
问题描述:
我在我的数据库students
两个表:获取行值仅在特定列的值不存在
GRADE_REPORT:
+----------------+-------------+------+
|StudentNo | SectionId | Grade|
+----------------+-------------+------+
| 11 | 85 | B |
| 17 | 112 | B |
| 17 | 119 | C |
| 17 | 135 | A |
| 8 | 85) | A |
| 8 | 92 | A |
+----------------+-------------+------+
学生:
+----------------+-------------+------+--------+----------------+
| StudentNumber | name | Classification| DepartmentName |
+----------------+-------------+---------------+----------------+
| 17 | Bill Smith | 1 | CS |
| 8 | Bob Brown | 2 | CS |
| 11 | Nick Fiener | 4 | MATH |
+----------------+-------------+------+-----+---------+---------+
我试图找回所有学生的学号,姓名和主要部门ho do在他们的课程中没有任何A等级。所以,我期待下,当我运行查询:
+----------------+-------------+----------------+
| StudentNumber | name | DepartmentName |
+----------------+-------------+----------------+
| 11 | Nick Fiener | MATH |
这是我的发言至今:
SELECT students.STUDENT.StudentNumber, students.STUDENT.name,
students.STUDENT.DepartmentName
FROM students.GRADE_REPORT
INNER JOIN students.STUDENT
ON students.GRADE_REPORT.StudentNo = students.STUDENT.StudentNumber
WHERE
((students.GRADE_REPORT.Grade = "B"
OR
students.GRADE_REPORT.Grade = "C")
AND students.GRADE_REPORT.Grade != "A")
GROUP BY students.GRADE_REPORT.StudentNo;
编辑:
SELECT students.STUDENT.StudentNumber, students.STUDENT.name, students.STUDENT.DepartmentName
FROM students.STUDENT S
WHERE NOT EXISTS(SELECT students.GRADE_REPORT.StudentNo
FROM students.GRADE_REPORT gr
WHERE gr.StudentNo = S.StudentNumber
AND gr.Grade = "A");
答
使用not exists
:
select s.*
from students s
where not exists (select 1
from grade_report gr
where gr.student_no = s.student_no and gr.grade = 'A'
);
+0
我根据您的指示修改了代码(请参阅帖子)。然而,我收到一个错误:'错误代码:1054.'字段列表'中的未知列'students.STUDENT.StudentNumber'?你能告诉我为什么吗? – loveTrumpsHate
+0
@lovesTrumpsHate。 。 。在这个查询中没有'students.STUDENT.studentNumber'。使用表别名。 –
我根据M修改了代码戈登的指示(请看帖子)。然而,我收到一个错误:'错误代码:1054.'字段列表'中的未知列'students.STUDENT.StudentNumber'?谁能告诉我为什么? – loveTrumpsHate
将'students.STUDENT.StudentNumber'替换为's.studentnumber'和其他所有其他人 – zarruq