首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在MS SQLServer中交换两行,保留原始主键,无需手动更新

在MS SQL Server中,要交换两行并保留原始主键,可以使用以下方法:

  1. 使用临时表:
代码语言:sql
复制
-- 创建临时表
SELECT TOP 0 * INTO #TempTable FROM YourTable

-- 将需要交换的两行数据插入临时表
INSERT INTO #TempTable
SELECT TOP 2 * FROM YourTable WHERE SomeCondition ORDER BY SomeColumn

-- 交换两行的数据
UPDATE YourTable
SET SomeColumn = (SELECT SomeColumn FROM #TempTable WHERE SomeCondition)
WHERE SomeCondition

-- 删除临时表
DROP TABLE #TempTable
  1. 使用CTE(公共表表达式):
代码语言:sql
复制
;WITH CTE AS (
    SELECT TOP 2 * FROM YourTable WHERE SomeCondition ORDER BY SomeColumn
)
UPDATE YourTable
SET SomeColumn = (SELECT SomeColumn FROM CTE WHERE SomeCondition)
WHERE SomeCondition
  1. 使用ROW_NUMBER() 函数:
代码语言:sql
复制
;WITH CTE AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNumber FROM YourTable WHERE SomeCondition
)
UPDATE CTE
SET SomeColumn = (SELECT SomeColumn FROM CTE WHERE RowNumber = 2)
WHERE RowNumber = 1

在这些方法中,你可以根据你的需求选择合适的方法。请注意,这些方法都不需要手动更新主键。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

“设计应对变化”--实例讲解一个数据同步系统

;   原始库表的字段可以多于目标库相应的表;   原始库和目标库对应的表字段名称可以不一样;   二次开发快,仅需要以原始库或者目标库生成数据实体; 采用邮件作为数据通道,不受网络情况限制    ...例如,一方暂时不能联网;     双方网络不稳定;     在两个局域网之间实现“数据穿透”; 邮件内容使用7位ASCII编码,确保平台通用; 数据在传输过程中加密; 数据不经过任何文件存取,全部在内存中处理...4,如何使用数据同步实体类 好了,两个系统中的用户实体类都定义完成了,由于它们都继承自IUser接口,所以它们之间完全可以交换数据,最后剩下的工作就是将这两个实体类放到两个程序集中分别编译,例如 系统A...中的类编译成SystemA.Model.dll, 系统B中的类编译成SystemB.Model.dll, 只要为数据同步程序的发送端和接收端程序分别指名要使用的“数据同步程序集”即可,无需显式引用,IOC...,将实体类中的数据,插入或者更新到目标数据库中; 数据的查询和更新操作都由PDF.NET数据开发框架内置支持,不需要写一行SQL语句。

1K70

理解和使用SQL Server中的并行

主要好处之一就是复杂度通常与分享数据的多个执行的线程有关,而这些线程由SQLServer一个内部操作符处理。另外,在计划中的非交换操作符是完全串行执行的,并且不需要去关心这些问题。    ...例如,当创建分区索引的时候使用范围分割类型,那么如果要想查到属于哪种类型需要在查询计划中查找: ? 图10: 交换操作分割类型 保留输入顺序 一个交换操作符可以选择配置来保留排序顺序。...如果交换操作符没有保留上顺序,在交换器需要重新建立排序后优化器将必须引入额外的排序操作符。普通的请求排序输入的操作符包括流聚合、分段和合并连接。图11展示一个需要重新分配流的排序操作: ?...图11: 保留顺序的重新分配流 注意合并交换自身不会排序,它要求输入行必须进行排序吗。合并交换是效率更低比非保留顺序的,并且是有一定的性能问题的。 最大并行度 微软给出的官方指导: ?...交换操作符被用来匹配线程之间的行并且在并行计划中实现与不止一个线程交互。

2.9K90
  • 什么是JPA?Java Persistence API简介

    JPA中的元数据注释 清单3中的魔力是配置的结果,该配置是使用JPA的注释创建的。开发人员使用注释来告知JPA应该保留哪些对象,以及如何保留它们。...主键 在JPA中,主键是用于唯一标识数据库中每个对象的字段。主键可用于引用对象并将对象与其他实体相关联。每当您在表中存储对象时,您还将指定要用作其主键的字段。...在清单6中,我们告诉JPA要使用哪个字段作为Musician主键。...CRUD操作 将类映射到数据库表并建立其主键后,即可拥有在数据库中创建,检索,删除和更新该类所需的一切。...JPA中的实体关系 简单地使用原始字段持久化对象只是方程式的一半。JPA还具有管理彼此相关实体的能力。

    10.3K30

    MybatisPlus之-----BaseMapper

    简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响...支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库 支持主键自动生成:支持多达...4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无...("last_name")//设置驼峰命名和数据库命令对应,也可以在配置文件中进行全局配置。             ...; private Integer gender; private Integer age ; //数据库中不存在的列,但存在类中,注解后不会注入到sql

    8.2K30

    Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库

    数据库,而无需公网IP,无需设置路由器,亦无需云服务器。...保留一个固定tcp地址 登录cpolar官网后台,点击左侧的预留,找到保留的tcp地址,我们来为远程sqlserver保留一个固定的tcp地址: 地区:选择China vip 描述:即备注,可自定义 点击保留...地址保留成功后,系统会生成相应的固定公网地址,将其复制下来 配置固定tcp地址 在浏览器上登录cpolar web UI管理界面,Linux局域网ip地址+:9200端口。...点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的远程sqlserver隧道,点击右侧的编辑 修改隧道信息,将保留成功的固定tcp地址配置到隧道中 端口类型:修改为固定tcp端口 预留的tcp地址...:填写官网保留成功的地址 点击更新 隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。

    19110

    数据误操作,教你使用ApexSQLLog工具从 SQLServer日志恢复数据!

    由于是在开发试运行中的项目,还没来得及进行备份处理,所以从备份恢复宣告失败。就算有备份那么恢复的也是备份时间节点的数据,意味着使用平台做的数据需要从备份时间重新做过,而且有可能有遗漏。...查看日志数据 当我们组合完筛选条件后,就进入到日志分析界面,可以看到我们之前手动插入的三条数据实际已经在日志里面了,分成了三条insert语句。...注意 我们在使用日志恢复的时候如果表有主键会根据主键生成sql,如上图sql中 where后面的条件。如果表没有主键那么生成的sql后面的where条件会带上所有的字段。...在我帮小伙伴恢复数据的时候发现他的表没有设置主键,而且字段有20多个,3万多条数据生成的sql都是100多M,还要拆分执行。...比如我把Id主键去了再更新下Status状态到4,生成的sql如下,会提示没有主键。 ? 以上就是一次数据恢复的分享,如果下次你也遇到这种情况希望能帮到你。

    2.7K30

    新增腾讯云数据库连接,任务可定时发布,重新校验可指定表单——以用户体验为先的 Tapdata Cloud,又对功能细节下手了

    需求持续更新,优化一刻不停——Tapdata Cloud 3 月版本又更新啦!...还在为需要周而复始地手动启动周期性全量任务而头疼吗? ——你想要的「任务定时发布」功能已上线。...具体流程:打开设置,显示时间选择控件→按需选择计划运行时间,可选时间为:[当前时间,+∞)→完成其他设置并保存任务→任务在指定时间触发启动并运行(*手动划重点:如果【任务保存时间】≥【计划运行时间】,则设置成功保存的同时...从这一版开始,碰上数据校验不一致的问题时,就无需再重新执行整个校验任务啦!...新功能下,用户可以: 在迁移过程中自由修改表名(不仅仅是前后缀),从而实现将源表数据写入指定目标表 通过修改目标表名为同一表名,从而实现将多个结构相同的源表写入同一目标表 重视成长路上收获的每一条反馈

    1.5K40

    服务器的指标和瓶颈如何分析?

    如果这个数值很小,例如小于5 MB,系统会将大部分时间消耗在操作页面文件上。一般要保留10%的可用内存。最低不能交换频率(pages/sec),即内存与虚拟内存(硬盘)交换的频率。值越低越好,大致在1百以内。...2.avg.disk sec/read,avg.disksec/write 大于20ms,则可能有磁盘瓶颈 3.Avg.Disk sec/Transer磁盘中读写数据的平均时间,单位是秒。...SQLServer:Buffer Manager ->Buffer cache Hit Ratio 显示在高速缓存中找到数据的命中率。如果数值持续小于 85%, 则表示内存有问题。 2....SQLServer:Databases->Transactions/sec 每秒为数据库启动的事务数 6、线程 线程主要消耗的是CPU的资源,在CPU可负担的情况下,线程越多越好。

    2.4K10

    Mybatis-Plus

    支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库 支持主键自动生成:支持多达...使用lombok 在IDEA 中一定要安装插件,新的idea 版本一般默认都安装插件,如果使用的较低版本,需要手动安装一下。...jdbc 8 中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver 已经被废弃,否则运行测试用例的时候会有 WARN 信息 三、MP入门-编写代码 1、主类 在 Spring Boot...需要在创建数据表的时候设置主键自增 实体字段中配置 @TableId(type = IdType.AUTO) 3、update 3.1 根据Id更新操作 注意:update时生成的sql自动是动态sql...我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作: 数据库表中添加自动填充字段 在User表中添加datetime类型的新的字段 create_time、update_time

    1.1K20

    一个Pandas问题

    所以采集完几百个店铺之后这些标签一定会有重复数据 那么接下来问题就来了,在Pandas中的去重函数.drop_duplicates只有保留第一个或者最后一个的选项,我该怎样写代码才能在去重的同时完成对重复的值进行标签求和...下面是我的去重结果(一行代码),可以看到6000多行数据在去重求和完之后只剩下80多行 所以检验Pandas120题做的怎样的时候到了,公众号后台回复火锅获取该数据,完成之后在公众号后台给我留言相关代码...注1:一切借助其他软件、手动计算、第三方Python库的回答都是耍流氓!!...注2:我的测试方法为启动jupyter notebook并执行下面两行命令,之后粘贴你提交的命令,所以你无需给我提供导入读取等相关代码,仅需提供如何对df进行操作即可,也无需打印,我会自己check!...import pandas as pd df = pd.read_excel('原始标签.xlsx')

    57420

    【快学springboot】SpringBoot整合Mybatis Plus

    欢迎转载,但须保留此段声明。...mybatis plus简介 来自官方对于mybatis plus的介绍:MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发...支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用...,配置好插件之后,写分页等同于普通 List 查询 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005...调用mybatis plus 提供的insert方法,执行后,会把主键设置到入参的id属性中,如下: image.png 4、分页 配置分页插件: @Bean public PaginationInterceptor

    52950

    万字干货 一文搞定mybatis-plus 让开发效率翻倍

    数据库插入id为:全局唯一的id 这个时候我们就要来了解一下, 主键生成策略 我们的实体类,中的 id -----》对应我们的主键 我们这个时候要了解一个东西:雪花算法 之前的学习中我们使用过什么?...AUTO(0), 自增 首先是自增: 主键上加上@TableId(type = IdType.AUTO) 首先是数据库的主键得是自增的,不然会报错 设置完之后,我们再次测试插入就可以得到结果了 更新操作...; 我测试了两次 有细节的出现,就是随着需求不同mybatisplus做了动态sql的处理,所有的自动生成sql都是动态配置的 自动填充 创建时间,修改时间,这些操作一般都是自动化完成的,我们需推荐手动更新..., 方式二:代码级别 乐观锁 在面试过程中,我们经常会被问道乐观锁,悲观锁,这个起始是非常简单 乐观锁:顾名思义乐观锁。...我们在平时的开发中,会遇到一些慢sql。

    85630

    故障分析 | ClickHouse 更新操作导致不可写,应该选择哪种表引擎?

    三种类型的使用方式本文不做介绍,可以在官方文档查询。 现在,需要尽快回复业务。经业务沟通后,将按照以下流程恢复服务: 清理 mutations 更新表引擎 启动服务 验证解决 1...., comment String, views UInt64 ) ENGINE = ReplacingMergeTree PRIMARY KEY (author, id) -- 插入两行数据...hackernews_rmt VALUES (1, 'ricardo', 'This is post #1', 0), (2, 'ch_fan', 'This is post #2', 0) -- 在插入两行数据...建表的时候主键是author 和 id,当没有指定 ORDER BY 的时候,和主键一致。 现在使用 final 查询,如果排序键相同(在这里是 id,author)会自动选择最新的插入的数据。...然后当我们使用 optimize 进行分区合并的时候,会直接删除旧数据保留新数据。合并是 ClickHouse 系统自动判断,无需手工处理,这里是为了演示手工执行了 optimize 的效果。

    18710
    领券