可以使用 ROWER_NUMBER()函数来获取行数,但是这个函数不能给别名,只好放到子查询中,后来一想将所有条件放到子查询中,再根据rowernumber来获取指定页的方法来进行分页查询。
后来想到在子查询中增加 top 来限制查询的结果数,这样就不会查询多余的结果了。
这样写在Mybatis中语句也不会太长~~~
在ROW_NUMBER()函数的使用中,如果不是根据主键来排序(是这样吧,反正会报错~),则要增加OVER(order by field) 来指定排序的字段~~~
仅作个笔记,以后就不用再查来查去的
SELECT
m2.*
FROM
(
SELECT
TOP (90) mf.id,
mf.nr,
mf.fsr,
ISNULL(yhf.ui_desc, '系统消息') fsrName,
mf.fssj,
mj.jsr,
yhj.ui_desc jsrName,
mj.zt,
rownumber = ROW_NUMBER () OVER (ORDER BY fssj DESC)
FROM
dbo.hk_Mess_FS mf
LEFT JOIN dbo.hk_Mess_JS mj ON mj.id = mf.id
LEFT JOIN dbo.YH yhf ON yhf.ui_id = mf.fsr
LEFT JOIN dbo.yh yhj ON yhj.ui_id = mj.jsr
WHERE
mf.fsr = 'admin'
AND mj.zt = '1'
) AS m2
WHERE
m2.rownumber BETWEEN 81
AND 90