日期:2014-05-18  浏览次数:20368 次

求思路或语句?
我要做一个排序,比如要手动干预,把某几条放到第一位,第四位,第十位,其它照常排序。


------解决方案--------------------
SQL code

;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

你中间插入几次,就执行几次
最后不要忘了合并的时候,那几条插入的纪录要有编号