SQL CTE 和 ORDER BY 影响结果集

2023-11-27

我在下面粘贴了一个非常简化的 SQL 查询版本。我遇到的问题是ORDER BY语句正在影响我的 CTE 的选择结果。我一直无法理解为什么会这样,我最初的想法是在 CTE 中,我执行了一些SELECT声明,然后ORDER BY应该致力于那些结果。

不幸的是,我看到的行为是我内心的SELECT声明受到订单的影响,给我的“项目”不在TOP 10.

这是一个数据示例: (按ID倒序索引)

ID,   Date
9600  2010-10-12
9599  2010-09-08
9598  2010-08-31
9597  2010-08-31
9596  2010-08-30
9595  2010-08-11
9594  2010-08-06
9593  2010-08-05
9592  2010-08-02
....
9573  2010-08-10
....
8174  2010-08-05
....
38    2029-12-20

我的基本查询:

;with results as(
select TOP 10 ID, Date
from dbo.items
)
SELECT ID
FROM results

查询返回:

ID,   Date
9600  2010-10-12
9599  2010-09-08
9598  2010-08-31
9597  2010-08-31
9596  2010-08-30
9595  2010-08-11
9594  2010-08-06
9593  2010-08-05
9592  2010-08-02

我的查询ORDER BY

;with results as(
select TOP 10 ID, Date
from dbo.items
)
SELECT ID
FROM results
ORDER BY Date DESC

查询返回:

ID,   Date
38    2029-12-20
9600  2010-10-12
9599  2010-09-08
9598  2010-08-31
9597  2010-08-31
9596  2010-08-30
9595  2010-08-11
9573  2010-08-10
9594  2010-08-06
8174  2010-08-05

谁能解释一下为什么第一个查询只会返回表中前 10 个的 ID,而第二个查询会返回整个表的前 10 个(应用排序后)。


当你使用SELECT TOP n you must如果您想要确定性行为,请提供 ORDER BY,否则服务器可以自由返回任何 10 行感觉就像。您所看到的行为是完全有效的。

要解决该问题,请在 CTE 内指定 ORDER BY:

WITH results AS
(
    SELECT TOP 10 ID, Date
    FROM dbo.items
    ORDER BY ID DESC 
)
SELECT ID
FROM results
ORDER BY Date
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL CTE 和 ORDER BY 影响结果集 的相关文章

  • 加密数据库字段的好方法?

    我被要求加密数据库中的各种数据库字段 问题是这些字段在读取后需要解密 我在用着Django and SQL Server 2005 有什么好主意吗 See 在 SQL Server 2005 数据库中使用对称加密 https web arc
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 使用 Dapper 插入时出现 NullReferenceException

    当我运行以下代码时 我收到一个 NullReferenceException 异常 指出对象引用未设置到该对象的实例 我已经使用不太复杂但格式相同的对象成功插入了 dapper 所以我不确定我做错了什么 public void Foo IE
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR

随机推荐

  • Google 地图距离和方向 API 之间的区别

    Google 为 1 距离矩阵和 2 方向服务提供 API 我试图搜索1和2之间的区别 我的任务是 当用户从源移动S到目的地D使用某种路径 我们需要展示用户实际走过的路径 在谷歌地图上 实现它的最佳方法是什么 使用 1 距离矩阵 API 或
  • jQuery 自动完成:移动列表位置?

    我想知道是否可以将下拉列表向下移动 4px 我尝试过多种风格 ui autocomplete 包括 margin top 4px top 4px 但它似乎不起作用 接受的答案是不再有效因为the offset该选项在 jQuery UI v
  • 如何从控制台中的标准输入读取内容?

    我想从命令行读取标准输入 但我的尝试已经结束 程序在提示我输入之前就退出了 我正在寻找相当于控制台 ReadLine in C 这就是我目前所拥有的 package main import bufio fmt os func main re
  • 使用 python3.6 进行 Django 迁移错误:根:未找到哈希 sha3_224 的代码

    你好我读过Django 教程我有一个与特定相关的错误sha3 224迁移过程中的哈希函数 如何解决这个问题呢 谢谢 venv linuxoid linuxoid ThinkPad L540 myprojects myproject pyth
  • 使用 INDEX 和 MATCH 在表数组中进行两列查找

    我希望 Excel 显示具有两个匹配单元格的表数组中的值com cd and div cd using INDEX and MATCH 我尝试过以下公式 但它不起作用 INDEX K9 K53 MATCH K3 I9 I53 0 MATCH
  • 在 data.table 列中使用列表

    In data table可能有类型的列list我第一次尝试从这个功能中受益 我需要存储表的每一行dt一些来自 rApache Web 服务的评论 每个评论都会有一个用户名 日期时间和正文项 不要使用带有一些奇怪 不寻常的字符的长字符串来将
  • Android + OpenCV:使用CameraBridgeViewBase时如何设置相机分辨率

    您好 我正在使用 OpenCV4Android 人脸检测示例 我想知道如何获得相机的分辨率并将其设置为其他值 在此示例中 CameraBridgeViewBase 我在对象上看到了这一点 private CameraBridgeViewBa
  • 如何修复 python socket-io 服务器中的“Access-Control-Allow-Origin”错误

    我正在创建一个使用 Vue js 作为客户端 和 Python 作为服务器 的项目 Python用于一些计算 Vue js用于接口 我使用 python socketio 连接它们 https python socketio readthe
  • java中ArrayList的排序

    我有一个 ArrayList of String 的 ArrayList 在 Outer ArrayList 的每个索引上 每个 Inner ArrayList 有四个项目 有四个参数 联系人 ID 联系人姓名 联系地址 联系电话 现在我想
  • Telegram 机器人向机器人发送消息

    我编写了一个电报机器人 这在发送给群组或用户时效果很好 不过我有一个特殊的要求 我需要能够发送给另一个机器人 将两个机器人以管理员身份添加到组时 我仍然无法通过第二个机器人接收消息 我只能通过添加到该组的真实用户帐户看到它 我缺少什么 我使
  • Linux命令用另一个字符串替换大文件中的字符串

    我有一个巨大的 SQL 文件在服务器上执行 转储来自我的机器 其中有一些与我的机器相关的设置 所以基本上 我希望每次出现 c temp 被替换为 home some blah 如何从命令行完成此操作 sed对于大文件来说是一个不错的选择 s
  • MYSQL:如何找到“上周一的日期”(性能问题)

    有没有比写更简单的方法 select date sub curdate 间隔 WEEKDAY curdate 天 正如上周一从双 如果您不使用古老的 MySQL 则可以将其包装在存储函数中 CREATE FUNCTION LastMonda
  • rgdal 包纬度/经度 -> UTM

    有人能看出这有什么问题吗 library rgdal Make a two column matrix col1 long col2 lat xy lt cbind c 107 c 26 Convert it to UTM coordina
  • 使用 Numpy 和 Cython 加速距离矩阵计算

    考虑一个维度为 NxM 的 numpy 数组 A 目标是计算欧几里德距离矩阵 D 其中每个元素 D i j 是行 i 和 j 之间的欧几里德距离 最快的方法是什么 这并不完全是我需要解决的问题 但它是我正在尝试做的事情的一个很好的例子 一般
  • 从电子邮件提交表格

    我正在开发一个通过电子邮件提交表单的项目 场景是这样的 我们将向电子邮件列表发送一份表格 客户必须在其中填写表格 一旦他们点击 提交 就应该提交表格 并且服务器应该能够检索填写者提供的值 当我尝试过 它没有将提交按钮视为表单提交 并且没有执
  • 在关系数据库中,我们可以拥有一个与其他表没有任何关系的表吗?

    在关系数据库中 我们可以拥有一个与其他表没有任何关系的表吗 是的 关系的表达方式是使用外键 如果您生成的表没有外键 并且其他表中没有外键指向该表 则它没有关系 不过 以后仍然可以建立关系 所以不要担心搬起石头砸自己的脚
  • 如何访问R中传单生成的地图

    假设我有这样的代码 Install devtools if needed if require devtools install packages devtools view rawif devtools R hosted with by
  • 如何在 git 中设置临时存储库?

    我想创建一个存储库 B 在名为 x master 的分支中跟踪远程存储库的主服务器 A 它自己的主控在初始创建时也应该是一个克隆 其他 开发人员 可以克隆并将更改推送到其中 有时 由于 A 中有更改 我需要能够将它们拉下来并将它们合并到 B
  • std::ifstream 缓冲区缓存

    在我的应用程序中 我试图合并排序的文件 当然要保持它们排序 因此我必须迭代两个文件中的每个元素 以将最小值写入第三个文件 这在大文件上运行得相当慢 因为我没有看到任何其他选择 必须完成迭代 我正在尝试优化文件加载 我可以使用一定量的 RAM
  • SQL CTE 和 ORDER BY 影响结果集

    我在下面粘贴了一个非常简化的 SQL 查询版本 我遇到的问题是ORDER BY语句正在影响我的 CTE 的选择结果 我一直无法理解为什么会这样 我最初的想法是在 CTE 中 我执行了一些SELECT声明 然后ORDER BY应该致力于那些结