表格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
也就是说,应该返回每组中的最后一条记录?
答案 0 :(得分:1)
SELECT
r1.*
FROM remark r1
LEFT JOIN remark r2
ON (r1.serial_no = r2.serial_no
AND r1.remark_no < r2.remark_no)
WHERE r2.remark_no IS NULL;
答案 1 :(得分:0)
对于每个SerialNo的顶部RemarkNo(以及来自同一行的其他字段):
选择同一SerialNo
SELECT *
FROM remark r1
WHERE NOT EXISTS
(SELECT SerialNo FROM remark r2
WHERE (r2.RemarkNo>r1.RemarkNo)
AND (r2.SerialNo=r1.SerialNo)
)
答案 2 :(得分:-2)
您可以通过返回结果并使用排序顺序来执行此操作。例如......
SELECT * from GROUP Order By GROUP.ID DESC
这将以最后一条记录的顺序返回结果。然后,如果你没有遍历结果,你只会返回一条记录......最后一条记录。