当前位置:Gxlcms > 数据库问题 > sql server相邻表记录交换(单双两两交换)

sql server相邻表记录交换(单双两两交换)

时间:2021-07-01 10:21:17 帮助过:3人阅读

如果表存在,就删除表 if object_id(Ndiosos, NU) 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相邻表记录交换(单双两两交换)

标签:obj   src   技术   char   upd   成功   创建   drop   date   

人气教程排行