这里有张桌子Remark
包含如下所示的数据:
SerialNo | RemarkNo | Desp
=============================================
10 | 1 | rainy
10 | 2 | sunny
11 | 1 | sunny
11 | 2 | rainy
11 | 3 | cloudy
11 | 4 | sunny
12 | 1 | rainy
什么查询将返回以下结果:
10 | 1 | rainy
11 | 3 | cloudy
12 | null | null
也就是说,应该返回每组倒数第二条记录?
假设一个SerialNo的所有RemarkNo都是连续的。备注编号越大,备注的时间越晚。因此,SerialNo 10 的倒数第二个 RemarkNo 为 1,Desp 为“rainy”。
Try:
select s.SerialNo, r.RemarkNo, r.Desp
from (select SerialNo, max(RemarkNo) maxRemark from Remark group by SerialNo) s
left join Remark r on s.SerialNo = r.SerialNo and s.maxRemark-1 = r.RemarkNo
(SQLFiddle 在这里。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)