【发布时间】:2020-02-01 13:54:59
【问题描述】:
我正在尝试关注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 表有一个名为school-year 的tinyint(1) 列,通常是1-3 之间的数字。每个用户可以有多个条目。所以我想找到最高的年份行。
我不完全理解他的回答,所以我真的无法继续下去,但如果有人能帮助我了解我哪里出错了,那就太好了。
如果我在上述语句中添加WHERE 子句以按用户缩小范围,例如AND h.userID = 54,我仍然会得到三行学生在场的所有三年。 LEFT OUTER JOIN 似乎根本没有什么不同。
【问题讨论】:
-
请在您的问题中提出需要提出的问题,而不仅仅是链接。这包括minimal reproducible example。请提出 1 个具体问题。这里要确定的各种问题是常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。如果您发布问题,请使用一个措辞作为标题。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)的 SQL,并以表格式作为代码输入。 How to Ask暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
标签: mysql sql left-join greatest-n-per-group sql-null