📌  相关文章
📜  门| Sudo GATE 2020 Mock II(2019 年 1 月 10 日)|问题 19

📅  最后修改于: 2021-09-24 06:23:59             🧑  作者: Mango

考虑以下关系模式:

STUDENT(SNO, SNAME, DEPT)
ENROLL(CNO, SNO, GRADE)
COURSE(CNO, DEPT)
PREREQ(CNO, PNO) 

键有下划线。 ENROLL(SNO) 列是引用 STUDENT(SNO) 的外键。所有出现的列 CNO 和 PNO,除了 COURSE 中的那个,都是引用 COURSE(CNO) 的外键。

SELECT E1.CNO, S.SNAME
FROM ENROLL E1, STUDENT S
WHERE E1.SNO = S.SNO
      AND NOT EXISTS ( SELECT * FROM ENROLL E2
                       WHERE E2.CNO = E1.CNO
                            AND E2.GRADE > E1.GRADE )

查询的输出是什么?
(A)对于每门课程,返回得分最高的学生的姓名。
(B)对于每个学生,返回课程名称。
(C)对于每门课程,返回从未获得最高分的学生的姓名。
(D)这些都没有。答案:(一)
说明:给定 SQL 查询,

SELECT E1.CNO, S.SNAME
FROM ENROLL E1, STUDENT S
WHERE E1.SNO = S.SNO
      AND NOT EXISTS ( SELECT * FROM ENROLL E2
                       WHERE E2.CNO = E1.CNO
                            AND E2.GRADE > E1.GRADE )

它返回每门课程得分最高的学生的姓名。

选项(A)是正确的。这个问题的测验