Swapping two rows in MS SQLServer retaining the original primary key and without manual update(在 MS SQLServer 中交换两行保留原始主键且无需手动更新)
问题描述
我有以下问题:我有像
I have the following problem : I have rows like
ID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
我想交换它们以保留所有旧的主键和约束.当然,我可以通过更新行轻松地手动解决这个问题.我有点想知道是否有人对此类问题有任何出色的解决方案,而不仅仅是手动执行更新命令.我真的非常感谢任何建议或建议.
I would like to swap them retaining all old primary keys and constraints. Of course, I can easily solve this manually by updating the rows. I am kind of wondering whether anybody has any excellent solution for this kind of problem instead of just executing update command manually. I really really appreciate any suggestions or recommendations.
推荐答案
我没有测试过这个,但我认为它会工作.我假设 id 是单列主键.如果不是这种情况,那么您将需要稍微调整此代码以处理 PK.
I haven't tested this, but I think it will work. I'm assuming that id is a single-column Primary Key. If that's not the case then you will need to adjust this code slightly to handle the PK.
UPDATE
T1
SET
column_1 = T2.column_1,
column_2 = T2.column_2,
...
FROM
dbo.My_Table T1
INNER JOIN dbo.My_Table T2 ON
T2.id =
CASE
WHEN T1.id = @id_1 THEN @id_2
WHEN T1.id = @id_2 THEN @id_1
ELSE NULL
END
WHERE
T1.id IN (@id_1, @id_2)
这篇关于在 MS SQLServer 中交换两行保留原始主键且无需手动更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 MS SQLServer 中交换两行保留原始主键且无需手动更新
- 导入具有可变标题的 Excel 文件 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- SQL 临时表问题 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01