移动排序位置的,能不能一条sql搞定
本帖最后由 x_wy46 于 2013-07-30 12:09:33 编辑 一个表的排序按No字段来,如下(当然也有其他字段,按No排序)
No
1
2
3
6
7
10
……
也就是No不一定连续(但是可以确定唯一),现在要求交换任意两个No的位置,能不能一句sql搞定
比如6要向上移动一个位置,即要排在3前面,则吧6的No更新为3,3的No更新为6(或者3直接加1)
要一句sql搞定的 排序
[解决办法]
update 表 set no=case when no=3 then 6 else 3 end where no in (3,6)
[解决办法]
update [表名]
set [No]=case when [No]=3 then 6 when [No]=6 then 3 end
where [No] in(3,6)
DECLARE @id1 INT, @id2 INT
SELECT @id1 = 3, @id2 = 6
UPDATE dbo.test2
SET id = (CASE id WHEN @id1 THEN @id2 ELSE @id1 END)
WHERE id = @id1
OR id = @id2
SELECT *
FROM [表名]
ORDER BY CHARINDEX(CAST(NO AS NVARCHAR(20)),'6,3')