我有一个Module and Students表以及一个名为Results的链接表。我试图只显示具有特定模块的最高结果的学生的一条记录,但我无法使其工作。这是我到目前为止的sql语法:
SELECT S.ST_FNAME, S.ST_LNAME, M.MOD_NAME, R.RES_GRADE
FROM STUDENT S, MODULE M, RESULTS R
WHERE S.ST_ID=R.ST_ID AND M.MOD_ID=R.MOD_ID
AND M.MOD_ID=503;
此时它会显示所有学生及其特定模块的结果。
帮助将不胜感激
答案 0 :(得分:1)
要获取一组行的单个值,请使用GROUP BY(在您的情况下,使用MAX获取最大值):
SELECT
S.ST_FNAME,
S.ST_LNAME,
M.MOD_NAME,
max(R.RES_GRADE) as max_grade
FROM STUDENT S
JOIN RESULTS R on S.ST_ID = R.ST_ID
JOIN MODULE M on R.MOD_ID = M.MOD_ID
WHERE M.MOD_ID=503
GROUP BY s.st_fname, s.st_lname, m.mod_name;
我还将您的旧式连接转换为ANSI式连接 - 现在大多数人都喜欢使用ANSI风格。