390 Star 1.7K Fork 483

闲.大赋(李家智) / BeetlSQL

 / 详情

分页问题

待办的
创建于  
2021-12-07 10:38

最新 beetlSQl 3.12.2, SQL Server 2008

(好像前面某个版本正常,不记得了)

如果语句中有 order by, 在生成分页语句出错,如

SELECT
-- @pageTag(){
tt.*
-- @}
FROM table1 tt
-- @pageIgnoreTag(){
order by tt.id
-- @}

生成的 count 正常

SELECT count(*) FROM table1

而下面不正常,多了 order by

with query as ( 
select inner_query.*, row_number() over (order by current_timestamp) as beetl_rn 
from ( SELECT top(?) tt.* FROM table1 tt order by tt.id
order by current_timestamp ) inner_query ) 
select * from query where beetl_rn between ? and ?

正常应用使用语句自有的 order by

评论 (4)

Adanz 创建了任务
Adanz 修改了描述
展开全部操作日志

你配置的是SqlServerStyle,还是SqlServer2012Style,这俩个都是网友提供的分页算法,没听说哪里出问题

你说的问题是在哪里?

配置的是 SqlServerStyle,我是在 Mapper 访问的, 生成的SQL确实如上,奇怪问题在哪里 :joy:

@SqlResource("table1")
public interface Table1Mapper extends BaseMapper<Table1> {
    PageResult<Table1> pageQuery(Object paras, PageRequest pageRequest);
}
pageQuery
===
SELECT
-- @pageTag(){
tt.*
-- @}
FROM table1 tt
-- @pageIgnoreTag(){
order by tt.id
-- @}

问题出现在,SqlServerStyle 中,总是返回固定 order by current_timestamp

@Override
public String getOrderBy() {
    //重写getOrderBy,如果设置了分页的order by条件 则按 order by 否则添加一个 current_timestamp 来排序
    return lineSeparator + appendExpress("text(' order by ' + _orderBy!'current_timestamp')" ) + " ";
}

估计使用 SqlServer 旧版本的人少了 :grinning:

遇到了同样的问题。请问您是怎么解决的

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
29 xiandafu 1678706040 7709676 liwbook 1634282527
Java
1
https://gitee.com/xiandafu/beetlsql.git
git@gitee.com:xiandafu/beetlsql.git
xiandafu
beetlsql
BeetlSQL

搜索帮助