加入Oracle的最高价值

时间:2013-10-23 16:21:19

标签: sql database oracle

我有两张桌子,学生和学校。

students
---------
ID  Name
---------
1   ABC
2   XYZ

school_year
-----------
ID  student_id  grade year
--------------------------
1   1           5     2011
2   1           6     2012
3   2           1     2010
4   2           2     2011
5   2           3     2012

我加入他们并获得此结果

select s.*, sy.grade, sy.year
from students s
left join school_year sy
on s.id=sy.student_id
order by s.name

我得到了这个结果

id name        grade year
---------------------------
1   ABC        5     2011
1   ABC        6     2012
2   XYZ        1     2010
2   XYZ        2     2011
2   XYZ        3     2012

我想加入学年表,学生的成绩最高/最高,所以表格看起来像这样。

id name       grade  year
-------------------------
1  ABC        6      2012
2  XYZ        3      2012

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT s.id, s.name, sy1.grade, sy1.year FROM school_year sy1
LEFT JOIN school_year sy2
  ON sy1.student_id = sy2.student_id AND sy1.grade < sy2.grade
JOIN students s ON sy1.student_id = s.id
WHERE sy2.grade IS NULL

小提琴here