如何对数据库中的数据排序并分页输出

请问如果我想根据如下sql语句得到的记录进行分页展示该如何向paginate()传递实参。"select * from user where age >18 order by age desc"

为何要将paginate()中"select *"和"from user where age >"作为两个实参而不合为一个实参传入?

图片.png图片.png


评论区

JFinal

2017-02-16 19:05

让 paginate 方法减少一个参数即可,大致如下:
paginate(1, 10, "select *", "from user where age >18");

hjhtchh

2017-02-20 17:13

@JFinal 如何实现排序呢?例如根据age进行排序

JFinal

2017-02-20 17:22

@hjhtchh 在 sql 中直接添加 order by age

无聊2356

2017-02-22 15:21

@JFinal 我的执行加上order by aeIoId就出错了
ORDER BY 子句中的列 "tb_im_ario.arIoId" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

Page paginate = Db.paginate(page, rows, "select * ", "from tb_im_ario where applyId='林恬伟' order by arIoId desc");

JFinal

2017-02-22 15:31

@无聊2356 这个就是纯 sql 问题了, jfinal 是将 sql 与参数原封不动的扔给 jdbc 去执行,无法干预到 sql 是否正确这件事

无聊2356

2017-02-22 15:40

@JFinal 哪我这个语句应该怎么改

JFinal

2017-02-22 15:41

@无聊2356 你是什么数据库?

无聊2356

2017-02-22 15:43

SqlServer

JFinal

2017-02-22 15:45

@无聊2356 SqlServer 可以在外层套一个 select * ,大致这样:
paginate(1, 10, "select *", "from (原有sql 在此) as temp", ....)

无聊2356

2017-02-22 15:52

@JFinal 可以了 谢谢 最后根据提示改成了这个样子
Db.paginate(1, 10, "select *", "from (select top(select count(*) from tb_im_ario) * from tb_im_ario where applyId = '林恬伟' order by arIoId desc) as temp");

热门反馈

扫码入社