SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML

这篇具有很好参考价值的文章主要介绍了SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近有一个项目在客户使用时发现死锁问题,用的数据库是SQLSERVER ,死锁的原因是有的客户经常去点报表,报表查询时间又慢,然后又有人在做单导致了死锁,然后主管要我们用SQLSERVER查询时要加with (NOLOCK),但是我在加完 with (NOLOCK) 后发现已经的用Mybatis-plus的 在mybatis里的分页报错了
SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML,sqlserver,xml,数据库
原因是用了with (NOLOCK) ,select count 把ORDER BY 也放进去了,所以报了这个错
解决办法
1.如果你不是很需要加with (NOLOCK) 的话还是不要加为好。
2.你确实需要加的话,还要用Mybatis-plus的话,要么就自己写select count,要么也可以自己写个后端分页,还可以和pagehelper分页插件组合使用
我的解决办法(将IPage 查询结果换成List 集合返回结果 然后 再将List集合转化成IPage 分页集合)文章来源地址https://www.toymoban.com/news/detail-650554.html

protected IPage list2Page(Term term, List list) {
        IPage iPage = this.getPage(term);
        int start = (term.getPage() - 1) * term.getRows();
        int end = term.getPage() * term.getRows();
        List list$cpage = new ArrayList();

        for(int i = 0; i < list.size(); ++i) {
            if (i >= start && i < end) {
                list$cpage.add(list.get(i));
            }
        }

        iPage.setTotal((long)list.size());
        iPage.setRecords(list$cpage);
        return iPage;
    }

到了这里,关于SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [SQL挖掘机] - ORDER BY语句

    当您想对查询结果进行排序时,可以使用 ORDER BY 子句。ORDER BY 子句允许您按照一个或多个列的值对结果进行排序。 在上述语法中,我们首先指定要选择的列,并在 order by 子句中指定要排序的列。可以同时指定多个列,它们将按照指定的顺序逐个排序。 其中, asc 表示升序排序

    2024年02月15日
    浏览(46)
  • MySQL使用SELECT 语句不加ORDER BY默认是如何排序的?

    大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 记录一个 MySQL 查询排序的问题,一个SQL语句没有加 order by ,那么查询出来的结果到底是按照什么规则排序的呢?查询了网上的一些资料,分享如下: •MyISAM 表 MySQL Select 默认排序是按照物理存储顺序显示的(不

    2024年02月10日
    浏览(50)
  • mysql远程连接权限grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant optio语句报错

    在docker上创建mysql之后被外界拒绝访问 查看了docker上的mysql连接并没有什么问题 但就是一直报错,查了半天说是需要外界连接授权 也就是 查了很久之后看到有说mysql8.0之后其实用的不是这样的sql 只需要按照步骤执行代码即可! 最后记得权限更新 问题就全部解决了!

    2024年02月12日
    浏览(40)
  • Mybatis xml中排序(order by)条件用#{}查询失败

    问题描述: 处理简单分页时,发现从外部传入的排序条件无法生效,但程序无报错,正常返回列表,只是排序条件不对; 原因: #{}表示一个占位符,当#{}传入的数据是一个字符串时,会自动将传入的数据加一个双引号。 解决方法: 使用${}将传入的数据直接显示生成在sql中

    2024年01月17日
    浏览(47)
  • hive order by length() 报错

    hql 如下 select length(tag) from table1 order by length(tag) limit 20; 报错FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) 修改 用别名替

    2024年01月21日
    浏览(38)
  • Hive(23):Select高级查询之SORT/ORDER/CLUSTER/DISTRIBUTE BY

    1 ORDER BY ORDER BY [ASC|DESC] Hive SQL中的ORDER BY语法类似于SQL语言中的ORDER BY语法。会对输出的结果进行全局排序,因此底层使用MapReduce引擎执行的时候,只会有一个reducetask执行。也因此,如果输出的行数太大,会导致需要很长的时间才能完成全局排序。 默认排序顺序为升序(ASC)

    2024年02月15日
    浏览(45)
  • SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解

    SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下: 其中, column1 , column2 ,等是您要从表中选择的字段名称,而 table_name 是您要选择数据的表的名称。 如果要选择表中的所有列,您可以使用 SELECT * 语法。 以下是一些示例: 从Customers表中选择 CustomerName 和 Ci

    2024年02月05日
    浏览(64)
  • 【MySQL】union (all) 后 order by 子查询排序不生效问题解决方案

    2308. 按性别排列表格 表:Genders Column Name Type user_id int gender varchar user_id 是该表的主键(具有唯一值的列)。 gender 的值是 ‘female’,‘male’,‘other’ 之一。 该表中的每一行都包含用户的 ID 及其性别。 表格中 ‘female’,‘male’,‘other’ 数量相等。 编写一个解决方案以重新

    2024年01月17日
    浏览(58)
  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

    使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 默认按升序排序。要按降序排序结果,使用 DESC 。 示例按名称按字母顺序排序结果: ORDER BY DESC 使用 DESC 以降序排序结果。 示例按名称以字母逆序排序结果: 您可以使用\\\"DELETE FROM\\\"语句从现有表格中

    2024年02月05日
    浏览(80)
  • Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?

       我们先对salary * 12 命名一个别名annual_sal  这段代码以annual_sal升序输出且正常执行没有报错。说明 order by 可以使用别名  我们再看看这个段代码 这段代码就报错了,报错说明是 Unknown column \\\'annual_sal\\\' in \\\'where clause\\\'。 由此可以得出where语句执行是找不到annual_sal. 要解决这个问

    2023年04月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包