当前位置: 代码迷 >> Sql Server >> sqlserver 依据顺序传入id 修改OrderBy
  详细解决方案

sqlserver 依据顺序传入id 修改OrderBy

热度:41   发布时间:2016-04-24 09:30:48.0
sqlserver 根据顺序传入id 修改OrderBy
 

id orderBy
1 1
2 2
3 3
以上是表结构 .
我想实现以传入id 的顺序来修改它们的orderBy .   如传入 "3,2,1"  正确结果如下:
id orderBy
3 1
2 2
1 3

求update如何实现 .
------解决思路----------------------
SELECT T1.id,T2.RN FROM TB T1
JOIN(SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN,id FROM 传入id) T2 ON T1.id=T2.id
ORDER BY T2.RN

------解决思路----------------------
引用:
Quote: 引用:

ID传入的时候顺序是固定的?要么升序要么降序?会不会出现既有升序又有降序的情况?
假设没有:可以使用row_number() order by ID 或者row_number() order by ID desc

以传入id的顺序作为顺序排序 .. 传入id 不是固定 . 有可能是 '2,1,3' 这个时候 2 的orderBy为1    ,1的为2 ...
排序是升序


我应该明白你的意思了,这个非常非常简单,你的表不是有两列id orderBy吗,设计表的时候 把orderby属性设置为identity(1,1)就可以了,比如create table T(ID int not null, OrderBy int identity(1,1) not null )这样插入数据的时候会自动按照ID的插入顺序补上OrderBy,递增的哦
  相关解决方案