这两天改 Bug 时使用 Sql Server 的子查询遇到了一些问题,特此记录一下,之前用 MySQL 比较多,按照 MySQL 的语法其实是没有问题的。


以下面这张表为例:

执行以下 SQL:

select * from (
select * from t_book order by number
) ttt

会报出下面的错误:

> Msg 1033, Level 15, State 1, Server WIN-IOR47PKR2AD, Procedure , Line 0
除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
> [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。 (1033)

经过一番折腾,找到解决方案:select 后面加上 top 100 percent

select * from (
select top 100 percent * from t_book order by number
) ttt

运行结果如下,看似成功运行了,但 order by 并没有生效!!!

于是乎,又是一番折腾,改动 SQL:

/*
一般来说,如果数据库不回超过1亿条数据,使用99.999999 PERCENT不会使你遗漏数据。需要的话再添俩9
*/
select * from (
select top 99.999999 percent * from t_book order by number
) ttt

得到正确结果:


参考


最后:提前祝大家假期快乐

SQL Server 子查询遇到的坑的更多相关文章

  1. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  2. SQL Server子查询填充DataSet时报500内部错误的解决办法

    运行环境为Visual Studio 2010,数据库为SQL Server 2008. 执行下面SQL语句 SELECT SubsiteId, SubsiteTitle, count(Collect ...

  3. SQL Server 子查询错误:No column name was specified for column 2 of 'a' error (转载)

    问: I have a MySQL query and I ran it working fine but same query showing error in SQL Server. SQL Se ...

  4. sql server 子查询 和exists使用

    概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...

  5. SQL server 子查询、设置主键外键、变量及变量查询

    一.子查询 子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这 ...

  6. SQL Server 子查询

    这些主要是老师上课讲的一些知识点,自己做了一些整理放在这里~~~ 子查询可以是标量的.多值的或是表值的. 在期待单个值的地方可以使用标量子查询.例如,以下查询返回具有最大员工编号的员工信息: SELE ...

  7. SQL SERVER 子查询使用Order By;按In排序

    [子查询]使用order by percent * from table order by id) a 这时发现结果没有按id排序,需要将100 percent 改成 99.999 percent 或 ...

  8. sql server——子查询

    简述: 在查询语句中包含着有另外一条查询语句,被包含的查询语句称为子查询,包含着子查询的查询就称为父查询. 总之,子查询就是在查询语句里嵌套一条或者多条查询语句. 常用子查询分类: 一.独立子查询 特 ...

  9. SQL Server子查询实例

    例子一 SELECT COUNT(*) FROM ( SELECT [PersonID] FROM [tbiz_AssScore] GROUP BY PersonID ) M 语法说明: 1).FRO ...

随机推荐

  1. python练习 数字不同数之和+人名最多数统计

    数字不同数之和 描述 获得用户输入的一个整数N,输出N中所出现不同数字的和.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬ ...

  2. go语言开发入门

    go语言开发入门 每个Go程序包含一个名为main的包以及其main函数,在初始化后,程序从main开始执行,避免引入不使用的包(编译不通过) 基础语法 基本数据类型 bool, byte int,i ...

  3. HTTPS协议原理解析

    一.对称加密与非对称加密 1,定义: 对称加密:加密和解密的秘钥使用的是同一个. 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatek ...

  4. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  5. 多商铺平台手机电脑自适应宣传展示平台店铺javassh项目代码线上

    部署运行:eclipse 建议使用jdk 1.8 + ,Tomcat 8.0 + 系统介绍: 1.网站后台采用主流的 SSH框架 jsp JSTL,网站前台采用Angular jS框架 2.网站前端采 ...

  6. SQL连接(内连接、外连接、交叉连接)

    SQL连接(内连接.外连接.交叉连接) 假设现在有两个表:table1 , table2 table1:                                table2 :  id     ...

  7. 转载:人家编写的程序:「雀神 AI」Suphx

    下文转载自:https://news.51cto.com/art/202004/613746.htm 按:虽然还是玩棋牌乐的AI,但相对于我们日常编写的XX管理系统,好比哺乳动物 VS 鱼类了. 20 ...

  8. Python 3.8.1 各版本下载地址

    Version Operating System Description MD5 Sum File Size GPG Gzipped source tarball Source release   f ...

  9. SMBMS

    SMBMS(Supermarket Billing Management System ) 目录 SMBMS(Supermarket Billing Management System ) 1. 项目 ...

  10. Solaris – configure ftp server

    SUN Solaris FTPSUN Solaris comes with ftp daemon based on WU-FTPd Washington University project.Whil ...