mysql - 试图选择最大列学年
问题描述
我正在尝试遵循这个问题的答案。
但是它对我不起作用,我不明白为什么。
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
表有一个tinyint(1)
名为的列school-year
,通常是 1-3 之间的数字。每个用户可以有多个条目。所以我想找到最高的年份行。
我不完全理解他的回答,所以我真的无法继续前进,但如果有人可以帮助我了解我哪里出错了,那就太好了。
如果我添加到WHERE
上述语句中的子句以按用户缩小范围,例如AND h.userID = 54
,我仍然会得到三行学生在场的所有三年。LEFT OUTER JOIN
似乎根本没有什么不同。
解决方案
您应该加入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
推荐阅读
- c++ - 如何使用向量c ++迭代文件中单词的位置
- c# - 在回收一些应用程序得到这个错误:线程被中止
- android - Android - 如何以编程方式选择着色器?
- sql-server - 动态 T-SQL WITH 语句错误
- ruby-on-rails - ActiveSupport Gem 的弃用警告
- relational-database - 关系模型员工部门和员工类型
- c++ - C++:尝试将分配的内存“释放”到 3 维数组时出错
- java - Collection.contains 产生错误的结果
- sql-server - sqlcmd 在 Linux 中通过 ODBC 连接到 MSSQL
- c - 使用全局变量同步 p_threads