尝试 select 最大列学年

Trying to select the max column school-year

我正在尝试遵循 this question.

的答案

但是它对我不起作用,我不明白为什么。

SELECT h.*
FROM `student-history` h
LEFT OUTER JOIN `student-history` h2 ON h.id = h2.id AND h.`school-year` < h2.`school-year`
WHERE 
h2.id IS NULL

我的 SQL 与 Adrian 的回答几乎完全相同,但结果不同。基本上 student-history table 有一个名为 school-yeartinyint(1) 列,通常是 1-3 之间的数字。每个用户可以有多个条目。所以我想找到最高的年份行。

我不完全理解他的回答,所以我真的无法继续进行下去,但如果有人能帮助我找出我哪里出错了,那就太好了。

如果我在上面的语句中添加 WHERE 子句以按用户缩小范围,例如 AND h.userID = 54,我仍然会得到学生在场的所有三年的三行。 LEFT OUTER JOIN 似乎根本没有什么不同。

我创建了an SQL Fiddle here.

您应该在 userID 而不是 id 加入。除此之外,您的查询没问题。

SELECT h.*
FROM `student-history` h
LEFT OUTER JOIN `student-history` h2 ON h.userID = h2.userID AND h.`school-year` < h2.`school-year`
WHERE 
h2.id IS NULL