在MS SQL Server中,要交换两行并保留原始主键,可以使用以下方法:
-- 创建临时表
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
;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
;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
在这些方法中,你可以根据你的需求选择合适的方法。请注意,这些方法都不需要手动更新主键。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云