获取行值仅在特定列的值不存在

问题描述:

我在我的数据库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"); 
+0

我根据M修改了代码戈登的指示(请看帖子)。然而,我收到一个错误:'错误代码:1054.'字段列表'中的未知列'students.STUDENT.StudentNumber'?谁能告诉我为什么? – loveTrumpsHate

+0

将'students.STUDENT.StudentNumber'替换为's.studentnumber'和其他所有其他人 – zarruq

使用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'。使用表别名。 –