日期:2014-05-18 浏览次数:20413 次
;with ach as ( select *,rid=row_number() over (order getdate()) from tb ) select * from ach order by (case when id=41 then 1 when id=32 then 4 when id=69 then 10 else rid end), (case when id in (41,32,69) then 0 else 1 end)
------解决方案--------------------
order by子句里通过case when来控制。
如果排序的该字段的值本身无法利用,则可以在select子句中,先使用case when处理值生成一个新字段,比如>100的都为1,>0and<=100的都为0,然后在order by子句中对新字段排序。
------解决方案--------------------
比如:第一条记录插入到第一位,
假设参数是@num,排序编号为[SN]
SET @num1=1;
UPDATE [临时表]
SET SN=SN+1
WHERE SN>=@num
你中间插入几次,就执行几次
最后不要忘了合并的时候,那几条插入的纪录要有编号