Oracle查看最高记录

时间:2014-04-28 18:15:26

标签: sql oracle syntax

我有一个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; 

此时它会显示所有学生及其特定模块的结果。

帮助将不胜感激

1 个答案:

答案 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风格。

SQL Fiddle