id layer name
1 1 aa
2 2 bb
4 3 cc
3 4 dd
5 6 aa1
6 3 bb1
7 2 cc1
8 3 dd1
9 4 ee1
10 5 ff1
11 2 11
12 2 22
13 3 33用什么语句能取出id=4的layer值为3时,从layer的值3到下一个layer>=3时这中间的数据出来,如下表:
4 3 cc
3 4 dd
5 6 aa1
6 3 bb1
(ID=7的时候,layer=2时小于3了就终止取数据了)当id=8,layer=3取出的数据如下:
8 3 dd1
9 4 ee1
10 5 ff1
(到id=11时,layer的值小于3了)也就是按id排序取的数据当从layer=4值开始时一直到值还是>=4的时候列出来的数据,
1 1 aa
2 2 bb
4 3 cc
3 4 dd
5 6 aa1
6 3 bb1
7 2 cc1
8 3 dd1
9 4 ee1
10 5 ff1
11 2 11
12 2 22
13 3 33用什么语句能取出id=4的layer值为3时,从layer的值3到下一个layer>=3时这中间的数据出来,如下表:
4 3 cc
3 4 dd
5 6 aa1
6 3 bb1
(ID=7的时候,layer=2时小于3了就终止取数据了)当id=8,layer=3取出的数据如下:
8 3 dd1
9 4 ee1
10 5 ff1
(到id=11时,layer的值小于3了)也就是按id排序取的数据当从layer=4值开始时一直到值还是>=4的时候列出来的数据,
select id from tab where layer=3 and id=4 2 结束的id:
select id=min(id) from tab where layer=3 and id>4 3 结果集:
declare @id int,@layer int
select @id=4 , @layer=3 -- 要查询的参数
select *
from tab
where 1=1
and id >= (select id from tab where layer=@layer and id=@id) /*开始的id*/
and id <= (select id=min(id) from tab where layer=@layer and id>@id) /*结束的id*/
from table3 c,
(
select a.id,min(b.id) as maxID
from table3 b,
(
select id,layer
from table3
where id=4 --the number you need // liuyann
) a
where b.id>a.id and b.layer<a.layer
group by a.id
) d
where c.id >=d.id and c.id<d.maxidsource
id layer name
1 1 aa
2 2 bb
3 4 dd
4 3 cc
5 6 aa1
6 3 bb1
7 2 cc1
8 3 dd1
9 4 ee1
10 5 ff1
11 2 11
12 2 22
13 3 33id=4
id layer name
4 3 cc
5 6 aa1
6 3 bb1
id=8
id layer name
8 3 dd1
9 4 ee1
10 5 ff1