其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂
CASE WHEN id>=@指定值 THEN 0 ELSE 1 END 只能实现 按 id>=@指定值 的先排序 后面的,id 才能实现 其余的就按原来的id排其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂
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 行受影响)
其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂谢谢指点,涨姿势了
union all
select * from TB where ID<@id order by ID
看不懂 then 0 else 1
end 后面的 ,id 也看不懂求解释
楼主要把5 7 9 1 2 3
大于等于指定值的排在前面,所以这部分就先排序了,其余的就按原来的id排
看不懂 then 0 else 1
end 后面的 ,id 也看不懂求解释同上
只能实现 按 id>=@指定值 的先排序
后面的,id
才能实现 其余的就按原来的id排其实我是对这句话“CASE WHEN id>=@指定值 THEN 0 ELSE 1 END”这样之后为什么就能 id>=@指定值 的先排序,其余的就按原来的id排 ,我是不晓得这个是为什么呵呵基础有点烂
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 行受影响)