首页
学习
活动
专区
工具
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

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

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

相关·内容

领券