我在表中有一列「SortIndex」,我想添加一個「案例更新」,通過傳入ID和所選擇的新位置來重新排序該表。按列重新排列列表
DECLARE @T TABLE
(
ID int,
Name char(1),
SortIndex int
)
INSERT @T
SELECT 21, 'A', 1 UNION ALL
SELECT 23, 'B', 2 UNION ALL
SELECT 35, 'C', 3 UNION ALL
SELECT 45, 'D', 4 UNION ALL
SELECT 55, 'E', 5
SELECT * FROM @T
DECLARE @SortIndex int
/* MOVE A -> 4 */
SET @SortIndex = (SELECT SortIndex FROM @T WHERE ID = 23)
/*
UPDATE @T
SET
SortIndex = CASE ... ??
*/
/* MOVE D -> 2 */
SELECT * FROM @T
這可能只用case語句來重建sortindex'es來解決這個問題?
UPDATE
期望的結果
A -> 4
Name SortIndex
B 1
C 2
D 3
A 4
E 5
D -> 2
A 1
D 2
B 3
C 4
E 5
,你能否告訴預期的結果? – Kaf