有一个表 Remark
,其中包含如下所示的数据:
SerialNo | RemarkNo | Desp
=============================================
10 | 1 | rainy
10 | 2 | sunny
11 | 1 | sunny
11 | 2 | rainy
11 | 3 | cloudy
12 | 1 | rainy
如果我运行查询 SELECT * FROM remark WHERE remark_no IN (SELECT MAX(remark_no) FROM remark GROUP BY serial_no);
,我仍然得到上面的结果:
什么查询将返回以下结果:
10 | 2 | sunny
11 | 3 | cloudy
12 | 1 | rainy
也就是说,应该返回每组中的最后一条记录?
3 回答
对于每个SerialNo的顶部RemarkNo(以及来自同一行的其他字段):
选择同一SerialNo没有更高RemarkNo的所有记录
http://sqlfiddle.com/#!2/7da1b/21
您可以通过返回结果并使用排序顺序来完成此操作 . 例如...
这将以最后一条记录的顺序返回结果 . 然后,如果您不循环浏览结果,您将只返回一条记录...记录的最后一条记录 .