首页 > 数据库 >T-SQL——关于将有序数据插入临时表

T-SQL——关于将有序数据插入临时表

时间:2024-07-30 10:06:31浏览次数:14  
标签:临时 插入 result 有序 SQL ORDER

目录

shanzm-2024年7月30日

0.背景

  • 问题:需要将排序后的数据结果集插入到临时表中,少量数据发现没有任何问题,插入到临时表中的结果集保留了插入前的顺序。
    但是当待插入的临时表的结果集数据量足够大,可以发现插入后,临时表中的数据并没有按照我们期待的那样,保留插入前的排序

  • 原因:在SQL Server 2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDER BY也是有序状态),但是从SQL SERVER 2012开始,即使插入的记录集有序,查询出来的结果变成无序了。需要依赖ORDER BY来或得到一个有序结果



1. 解决方案1:使用ROW_NUMBER() OVER (ORDER BY…… )

DROP TABLE #result;

CREATE TABLE #result
(
    RowID INT NULL,
    Id INT NULL,
    Name NVARCHAR(100) NULL,
);

INSERT INTO #result
SELECT ROW_NUMBER() OVER (ORDER BY b.CreatedTime DESC) RowID,--指定需要的排序方式
       Id,
       Name,
       CreatedTime,

FROM
XXX_Table


2.解决方案2:给临时表创建聚集索引

CREATE TABLE #result
(
    Id INT NOT NULL,
    Name NVARCHAR(100) ,
    CreateTime DATETIME 
);

CREATE CLUSTERED INDEX IDX_#tables_CreateTime ON #result (CreateTime DESC);


INSERT INTO #result
SELECT Id,
       Name,
       CreatedTime
FROM XXX_Table
ORDER BY CreatedTime DESC;

SELECT *
FROM #result;



3.参考

标签:临时,插入,result,有序,SQL,ORDER
From: https://www.cnblogs.com/shanzhiming/p/18331611

相关文章

  • 简单认识MySQL存储引擎
    MySQL体系结构连接层。一些客户端和链接服务,主要完成如连接处理、授权认证及选相关的安全方案服务层。主要完成大多数的核心服务功能,比如SQL接口,缓存的查询,SQL分析和优化,部分内置函数的执行。所以跨存储引擎的功能在这一层实现,如存储过程、函数等。引擎层。真正负责DBMS中数据......
  • MySQL 基础语法教程
    MySQL是一个开源的关系型数据库管理系统,它广泛应用于各种网站和应用程序中。本文将介绍MySQL的基础语法,包括数据库和表的创建、数据操作、索引和约束等内容。1.基本概念在MySQL中,数据库用于存储数据,表是数据库中的基本单位。了解这些基本概念是使用MySQL的第一步......
  • 只讲干货!!数据库的裤腰带!!今天拿下:MySQL中的约束!!
    MySQL中的约束约束概述        数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性主键约束(PrimaryKey)PK        主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。        ......
  • mysql中substring_index类似split分组功能
     这条MySQL语句中使用了substring_index函数来处理training_pictures列的数据。下面是该函数的具体用法:substring_index(str,delim,count):这个函数会返回字符串str中第count个出现的分隔符delim之前的所有字符,或者之后的所有字符(取决于count的正负)。具体到你提供的查询:s......
  • pandas read_sql 导致值错误:“年份 -10100 超出范围”由数据库中的日期损坏引起
    我正在运行一个脚本将数据从oracle迁移到postgres。运行以下命令时df=pd.read_sql(query,oracle_conn,)会导致错误ValueError:year-10100isoutofrange对于跨越数千的某些行,有些日期已损坏并且年份数字很大。例如,下面是损坏的日期,而下一......
  • mysql的主从复制和读写分离
    目录主从复制主从复制的模式1.异步模式2.全同步模式3.半同步模式主从复制的延迟主从复制的延迟的原因解决方案双一设置性能化设置主从复制如何实现安装步骤读写分离实验步骤面试题主从复制主从复制的模式1.异步模式mysql的默认模式:主库在更新完事务之后会......
  • mysql的MHA以及故障模拟
    目录MHA概念MHA的组件MHA的特点实验:搭建完成MHA的架构实验:主备切换实验结果实验:故障切换实验:故障恢复MHA概念MHA:高可用模式下的故障切换,基于主从复制。它解决的是单点故障和主从复制不能切换的问题。它至少需要3台。故障切换过程0-30秒。它能根据VIP地址所在的主机......
  • PostgreSQL 之 to_timestamp函数
    to_timestamp是PostgreSQL中的一个函数,用于将字符串或数字转换为时间戳。以下是关于to_timestamp的详细介绍:引入版本to_timestamp函数在PostgreSQL7.3版本中引入。语法to_timestamp有两种主要的用法:1.将字符串转换为时间戳to_timestamp(text,text)第一......
  • SmartSQL:一款方便、快捷的数据库文档查询、生成工具
    SmartSQL⚡一款方便、快捷的数据库文档查询、生成工具致力于成为帮助企业快速实现数字化转型的元数据管理工具......
  • SQLServer 事务复制在发布端(publication)和订阅端(subscription)对应的数据库还原之后复
     书接上文,在一个正常的事务复制环境中,如果发生了数据库还原,事务复制会不会出问题,出问题之后又如何恢复,如果在不删除订阅发布重建的情况下,如何在现有基础上修复事务复制的异常,这个问题可以分为两部分看:1,如果publisher数据库发生了还原操作,事务复制会出现什么异常,该如何恢复?2,如......