(解决)除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错

解析数据库分页的两种方法对比(row_number()over()和top的对比) 今天,老师带偶们复习了一下数据库中的分页,总体来说,今天感觉还不错,因为以前学的还没忘。好了,进入正题,首先,说说top的方法top方法其实就是将你要查的的页数的数据前得数据去掉 再取前几例: 代码如下: 一页3条数据 取第一页的数据 — 第一页        select top 3 * from T_news;                       取第五页的数据–第五页       select  top 3 * from T_News where id not in (select top (3*4) id from T_News)      –关键就在于not  in上 靠他来 立即下载

(解决)除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错

我百度了很久 大多数都在说 在子查询下面加 top 100 percent
但是还是没有解决我的问题
于是我就

打开Mybatis-plus官网 然后结合报错的sql 语句

首先我们看一下报错的sql 语句

==>  Preparing: SELECT COUNT(1) FROM ( SELECT a.id, a.expName, a.phoneNum,
 a.duty, a.post, a.addTime,
 CASE WHEN a.isLocal = 0 THEN '是' ELSE '否' END AS isLocal,
 a.workUnit, STUFF((select ',' + majorCode from (
 SELECT f.majorCode, b.expertId FROM em_major f LEFT JOIN em_expert_major b 
 ON f.id = b.majorId where b.expertId = a.id ) d for xml path('')),1,1,'' ) AS major
 FROM em_expert_library a 
left join em_expert_major e on a.id = e.expertId left join em_major j on j.id = e.majorId 
GROUP BY a.id, a.expName, a.phoneNum, a.duty, a.post, a.addTime, a.isLocal, 
a.workUnit order by a.addTime desc ) TOTAL 

从上面这个代码就可以看出来 Mybatis-plus默认会在我们的sql语句基础上在包一层 SELECT COUNT(1) FROM(我们查询的sql语句) TOTAL 这样 里面包的sql语句就变成子查询了 并且还有 order by a.addTime desc 所以就报错了

就是因为 Mybatis-plus的分页在上面包裹了这一层 所以就出现了除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效这样的报错信息

解决办法

我们就想办法去掉 Mybatis-plus默认count 的操作
打开Mybatis-plus的官网
我们就可以看到这样一句话在这里插入图片描述
所以我们就找到解决办法了
如下两句代码
page.setSearchCount(false);
page.setTotal( this.baseMapper.getTotal(params));

完整代码如下

@Override
    public Page<Map<String, Object>> getPageList(Map<String, Object> params) {
        Page<Map<String,Object>> page = new Page<>();
        // 由于有子查询 并且有排序 sql server的排序是游标不是虚拟表 所以关闭count 不然分页失效
        page.setSearchCount(false);
        page = InitPage.intance(params, page);
        List<Map<String, Object>> pageList = this.baseMapper.getPageList(page, params);
        // 重新查询然后给page设置Total
        page.setTotal( this.baseMapper.getTotal(params));
        return page.setRecords(pageList);
    }

**

这样结果一切正常

**
在这里插入图片描述

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛 15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。 阅读详情

相关推荐

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 636

Sql Server + Mybatis-plus使用Page时报错

Sql Server + Mybatis-plus使用Page时报错:“OFFSET”附近有语法错误代码实现错误信息解决过程定位问题解决方案 “OFFSET”附近有语法错误 最近开发遇到的问题,SqlServer+Mybatis-Plus Page插件进行分页时的报错 代码实现 Maven依赖 <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId

qq_35322065的博客 1867

​​WPF入门与XAML基础:从零开始构建你的第一个WPF应用​

本文是WPF入门系列首篇,详细介绍WPF的核心优势与开发环境搭建。通过创建第一个WPF项目,解析MainWindow.xaml和App.xaml等关键文件,深入讲解XAML基础语法,包括属性赋值、命名空间和事件绑定。最后通过按钮点击交互示例演示WPF应用程序运行流程,帮助开发者快速上手WPF开发,为后续学习布局系统和数据绑定等高级主题奠定基础。

Hare的博客 3276

Mybatis中使用PageHelper出现:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

在使用PageHelper插件时,如果执行的sql语句中包含了order by 这个关键字,执行这句sql的时候肯定会报错: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。 这是因为order by以后返回的结果时游标,PageHelper 在执行count查询的时候就会报错。针对于这个问题Pag...

yangqinfeng1121的博客 1万+

C# 开发 WPS 插件实战:从环境搭建到功能实现(附完整代码)

本文提供了一份详尽的C#开发WPS插件实战指南,涵盖从环境搭建到功能实现的完整流程。通过COM技术,开发者可以创建自定义插件,为WPS Office扩展自动化功能,如文档处理与格式转换。文章包含核心概念解析、Ribbon界面集成、调试部署方法及完整代码示例,帮助开发者快速上手。

rust6ferris的博客 927

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3990

问题解决:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

因为项目需要,需要在公共框架里面引入sqlserver方言类。而在实现sqlserver方言类之后,调用方言类的方法的时候,发现一个错误,进而引出了对于top关键字的使用。

枫夜 1万+

自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)

之前在本科学习阶段学习过一点51单片机的知识,可是因为基本没有实践过几次现在已经完全忘记了。。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了,不过经过三四天的自我摸索,之后参考他人的学习经验,现在已经基本能处理这个问题了,所以为了方便后面的学者,主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来。(因为刚刚接触,很多原理性的东西都还不懂,只是一个操作步

yang_csdnForOBTS的博客 8659

sql执行报错:除非另外还指定了 TOP,OFFSET 或FOR XML,否则,ORDER BY 子句在视图,内联函数,派生表子查询和用表表达式中无效

sql执行报错:除非另外还指定了 TOP,OFFSET 或FOR XML,否则,ORDER BY 子句在视图,内联函数,派生表子查询和用表表达式中无效

weixin_44248903的博客 1416

在工作台 LS-DYNA 中检索和变换反作用力分量

在结构仿真中,通常需要由施加的位移或速度边界条件产生的反作用力。此外,通常需要根据用户定义的坐标系解析反作用力分量。在本文中,详细介绍了在Workbench (WB) LS-DYNA 中,相对于用户定义的坐标系检索和变换反作用力分量的过程。

jkh920184196的博客 885

用 SAP S/4HANA Configure Predefined Custom Fields 玩转预定义自定义字段:从概念到实战

SAP预定义自定义字段配置指南:安全扩展业务模型的云原生方案 摘要: 本文系统介绍SAP S/4HANA Cloud中预定义自定义字段的配置方法,对比普通自定义字段与预定义字段的区别,阐述其技术特点与业务价值。重点解析"Configure Predefined Custom Fields"应用的核心功能,包括字段元数据配置、多语言支持、UI集成等能力,并通过业务伙伴扩展案例演示完整实施流程。文章指出预定义字段方案在云环境下的独特优势:既满足业务扩展需求,又能保证系统可升级性,是SaaS环

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 79

sqlserver  sql 异常<除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。>

解决办法:在sql子查询SELECT 后加 TOP 100 PERCENT (查询出前百分比为100的数据,也就是查询出全部数据)问题:使用sql查询时报错。

henry_liu的博客 2582

(七)独立按键

(七)独立按键

m0_52555663的博客 1714

Mybatis-plus 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

由于sqlserver 子查询不支持order by, SELECT COUNT(1) FROM ( SELECT ****** from table order by time desc ) TOTAL; 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效 使用Top 100 percent 的方法可以解决上述这个问题,但是分页组件进行分页查询时会在加上top 100 percent WITH

qq_38807792的博客 4567

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PaginationInterceptor分页异常:Mybatis-plus 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图

SQLServer数据源,Mybatis分页插件PaginationInterceptor分页查询出现异常:com.microsoft.sqlserver.jdbc.SQLServerException: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

qq_35614522的博客 5193

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MyBatis-Plus分页查询在SQL Server中的排序问题解析

MyBatis-Plus分页查询在SQL Server中的排序问题解析 【免费下载链接】mybatis-plus mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.com ...

gitblog_01409的博客 636

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Mybatis-plus 分页 自定义count方法

除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。查询条件QueryWrapper中还有order by排序条件,则生成的select count(*) from(sql) 就会报错。那么count就会使用我们mapper中selectAll_COUNT这个方法查询count。部分情况下,生成的count的sql会有问题,比如我的sql是有group by,这个时候可以自定义count方法解决,设置。

鬼域X 4946

MyBatis-Plus多表联查三大实战方案与避坑指南

多表联查是关系型数据库开发中的基础能力,其核心在于SQL构造、结果映射与执行优化。理解JOIN原理、字段别名冲突、分页插件兼容性等底层机制,是保障高并发场景下查询稳定性的技术前提。MyBatis-Plus虽原生聚焦单表CRUD,但通过LambdaQueryWrapper条件拼装、@Select注解扩展及Service层分步组装三种路径,可安全、高效、可维护地支撑用户+订单、用户+认证、订单+商品等典型关联查询场景。本文结合百万级QPS生产实践,详解字段别名、乐观锁字段、逻辑删除条件等关键细节,助力开发者规避

weixin_30824479的博客 248

SQL“除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效“ 解决方法

在SQL中,当在子查询或派生表中使用ORDER BY时,如果没有同时使用TOP、OFFSET或FOR XML,系统会报错。这是因为ORDER BY在这些上下文中无法直接生效。为了解决这个问题,可以在子查询中使用TOP 100 PERCENT,这样ORDER BY就能正常执行。例如,原本的查询select * from (select * from tab order by userID desc) as a order by date desc会报错,但修改为select * from (select to

我将在此记录和分享我的个人学习内容,包含SAP相关产品,如:SAP HANA,SAP S/4 HANA,SAP Business ByDesign,SAP Business One、二次开发、SAP、SAP B1、 1223

针对sql错误:“除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效”的原理与解决

执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc逻辑上看着挺对 但是报错: 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。 解决方案

丹尼尔李的博客 1万+

关于SQL 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。消息 1033,级别 15,状态 1,第 4 行。

weixin_55797790的博客 1010

ORDERBY子句在视图、内联函数、派生表、子查询和通用表表达式中无效,除非还指定了TOP、OFFSET或FOR XML。

本文转载至https://www.cnblogs.com/betobe/p/12189126.html 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效 本文转载至:https://www.cnblogs.com/firstdream/p/5654617.html 执行sql语句: select * from (...

大钧的博客 3114

【sql】异常:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

sql 异常

开发随笔-猫咪酱 1821

记PageHleper 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

项目里面的复杂的查询语句需要进行分页,由于需要根据索引检索,且索引数据需要转格式,故查询语句里面包含 cast() 函数。 使用pageHelper的时候,自带的count语句拼接出来的结果就是在原来的语句上添加如下内容 select count(*) from ( your origin sql ) t 但是由于sqlserver 分页需要用到order by, select count(*) from ( your origin sql ) t 这条sql 里面便包含order by。 sqlser

weixin_45759287的博客 1702

【已解决】除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图...

【已解决】除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图

weixin_44953966的博客 8910
上一篇: 文件上传功能报错Current request is not a multipart request
下一篇: MYSQL根据id递归向下查询所有子集和后代
一个喜欢写代码的小伙子
博客等级 码龄6年 1粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值