1

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

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

请帮忙。谢谢。

4

1 回答 1

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

在这里拉小提琴。

于 2013-10-23T16:27:57.827 回答