DECLARE @指定值 INT
SET @指定值=5
SELECT * FROM TB
ORDER BY CASE WHEN id>=@指定值 THEN 0 ELSE 1 END,id

解决方案 »

  1.   

    select * from TB where ID>=@id order by ID 
    union all
    select * from TB where ID<@id order by ID
      

  2.   

    1楼正解,求解释一下,你那个sql我也没看懂,求学习
      

  3.   


    看不懂  then 0  else 1
    end 后面的 ,id  也看不懂求解释
      

  4.   

    to:#4
    楼主要把5 7 9 1 2 3
    大于等于指定值的排在前面,所以这部分就先排序了,其余的就按原来的id排
      

  5.   


    看不懂  then 0  else 1
    end 后面的 ,id  也看不懂求解释同上
      

  6.   

    其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂
      

  7.   

    CASE WHEN id>=@指定值 THEN 0 ELSE 1 END
    只能实现 按 id>=@指定值 的先排序
    后面的,id
    才能实现 其余的就按原来的id排其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂
      

  8.   


    select top 10 ROW_NUMBER() over(order by getdate()) as id
    into x
    from sysobjects 
    go
    select * from x 
    declare @n int = 3 
    select * from x order by (1000 + id ) %  (1000 + @n)
    goid
    --------------------
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10(10 行受影响)id
    --------------------
    3
    4
    5
    6
    7
    8
    9
    10
    1
    2(10 行受影响)
      

  9.   

    其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂谢谢指点,涨姿势了