sql server相邻表记录交换(单双两两交换)
在博客园的博问中看到了一个这样的提问:一个表中有id和name两个字段,id是连续非空不重复的,想要交换相邻表记录的name值(单双两两交换)。
另外,如果最后的单独行没有对应的下一行匹配记录的话,就不更新最后的单独行记录。
觉得有点意思,就试着实现一下(SQL Server),并记录下来。
创建一个diosos表。
-- 如果表存在,就删除表
if object_id(N'diosos', N'U') is not null drop table diosos;
-- 创建表
create table diosos(id int, name varchar(64));
往表中插入数据。
-- 插入数据
insert into diosos(id, name) values(1, 'one');
insert into diosos(id, name) values(2, 'two');
insert into diosos(id, name) values(3, 'three');
insert into diosos(id, name) values(4, 'four');
insert into diosos(id, name) values(5, 'five');
insert into diosos(id, name) values(6, 'six');
insert into diosos(id, name) values(7, 'seven');
insert into diosos(id, name) values(8, 'eight');
insert into diosos(id, name) values(9, 'nine');
查询出来看看数据是不是对的先。
-- 查询数据
select * from diosos;
实现相邻表记录交换(单双两两交换),原理就是根据对id取余判断奇偶和相邻id加减做左外连接关联,更新行记录的name。
-- 更新,两两交换,不成对不交换
update d1 set d1.name = d2.name
from diosos d1
left join diosos d2
on (d1.id%2 = 0 and d1.id = (d2.id + 1)) or (d1.id%2 = 1 and d1.id = (d2.id - 1))
where d2.name is not null;
再次查询,成功实现。
-- 再次查询
select * from diosos;
还是挺好玩的,虽然我觉得几乎不会有实际场景,哈哈哈。
"你要相信,在这个世界上会有人懂你背后的苦,也会有人愿意给你一整个季节的灿烂。"
sql server相邻表记录交换(单双两两交换)的更多相关文章
- 查找 SQL SERVER 所有表记录数
-- 所有表的记录数 SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE ...
- 统计SQL Server所有表记录数
SELECT SCHEMA_NAME(t.schema_id) AS [schema] ,t.name AS tableName ,i.rows AS [rowCount] FROM sys.tabl ...
- oracle相邻表记录交换(单双两两交换)
在博客园的博问中看到了一个这样的提问:一个表中有id和name两个字段,id是连续非空不重复的,想要交换相邻表记录的name值(单双两两交换). 另外,如果最后的单独行没有对应的下一行匹配记录的话,就 ...
- 千万级SQL Server数据库表分区的实现
千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...
- SQL Server 查询表的记录数(3种方法,推荐第一种)
http://blog.csdn.net/smahorse/article/details/8156483 --SQL Server 查询表的记录数 --one: 使用系统表. SELECT obje ...
- SQL Server 系统表简介
SQL Server 系统表简介 系统目录是由描述SQL Server 系统的数据库.基表.视图和索引等对象的结构的系统表组成.SQL Server 经常访问系统目录,检索系统正常运行所需的必要信息. ...
- 【转】SQL Server 查询表的记录数(3种方法,推荐第一种)
--SQL Server 查询表的记录数 --one: 使用系统表. SELECT object_name (i.id) TableName, rows as RowCnt FROM sysindex ...
- SQL Server删除表信息的三种方法
1.使用DELETE实现SQL Server删除表信息 (1)删除表中的全部信息 USE student GO DELETE student --不加where条件,删除表中的所有记录 go ...
- Sql server 系统表
sql server系统表详细说明 SQL Server 用户库中系统表说明 名称 说明 备注 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. sys ...
随机推荐
- Ribbon负载均衡及Feign消费者调用服务
微服务调用Ribbon 简介 前面讲了eureka服务注册与发现,但是结合eureka集群的服务调用没讲. 这里的话 就要用到Ribbon,结合eureka,来实现服务的调用: Ribbon是Netf ...
- 关于Git和GitHub的一些知识
git是分布式的版本控制工具,可离线,svn是集中式的,要联网操作.集中式的所有数据都放在服务器端,如果服务器宕机,则历史记录也可能就丢失了,这叫做单点故障.分布式的数据可直接保存在客户端. 为何要版 ...
- Java中dimension类详解
Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788
- css多余文本使用....代替
1. 只显示单行文本,多余文本使用...代替 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 2. 显示多行文本,多余文 ...
- docker cp命令出错问题
docker cp 4e6:/etc/nginx/nginx.conf /home/nginx/conf 使用docker在复制官方nginx容器的conf文件时,发生了错误. Error respo ...
- UTXO和Account模型一个都不能少
UTXO对于非区块链从业人员来说可能比较陌生,UTXO的全称是Unspent Transaction Output,这中本聪在比特币中的一个天才设计.而Account模型就很常见,也很容易理解,你银行 ...
- 配置, 映射WebDAV, 并通过IIS网站访问
服务端 0. 服务端安装IIS时, 选中WebDAV发布, Windows身份验证, 安装完毕后, 打开IIS管理器(inetmgr); 1. 新建网站或使用默认网站, 创建虚拟目录, 虚拟目录物理路 ...
- (转)滑动平均法、滑动平均模型算法(Moving average,MA)
原文链接:https://blog.csdn.net/qq_39521554/article/details/79028012 什么是移动平均法? 移动平均法是用一组最近的实际数据值来预测未来一期或几 ...
- linux基本命令的操作
---恢复内容开始--- ----------------------------=========================文件与目录操作cd /home 进入’/homw’目录cd … 返回 ...
- m3u8视频格式分析
“ 学习m3u8格式.” 一段时间之前,乘着某美女CEO的东风,学习了一个新的数据格式,即m3u8格式. 经过一段时间的沉淀,美女CEO的热潮大概已经褪去,今天才对这个格式进行分析,嘻嘻. 先介绍下来 ...