我有两张桌子,学生和学年的。

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

请帮忙。谢谢。

最佳答案

试试这个:

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

关于sql - 以Oracle最高的值(value)加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19547082/

10-12 20:15