我有两张桌子,学生和学校。
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
请帮忙。谢谢。
答案 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。