首页 新闻 会员 周边

求一个sql算法

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-11-25 16:57

如何从数据库中读取出连续的数据

id      value

1  1

2  1

3  1

4  1

5  0

6  1

7  1

8  0

9  1

正序读取出value为1的所有行 直到遇到不为1的停止,未知在某行会遇到value=0

id      value

1  1

2  1

3  1

4  1

要求能否在不用存储过程的情况下用sql实现

芒果の冰的主页 芒果の冰 | 初学一级 | 园豆:187
提问于:2014-05-04 10:43
< >
分享
所有回答(3)
0

Select id, value from table where value=1

order by id

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-05-04 10:48

那你会把 

6  1

7  1

9  1

都读取出来的

支持(0) 反对(0) 芒果の冰 | 园豆:187 (初学一级) | 2014-05-04 11:02
0

select id,value from table where Id<(select top 1 id from table where value!=1 order by id)

nianhua11 | 园豆:736 (小虾三级) | 2014-05-04 11:41

如果ID为GUID呢

支持(0) 反对(0) 芒果の冰 | 园豆:187 (初学一级) | 2014-05-05 13:12

@芒果の冰: 试试这个,加个rownumber列:
select top
((select top 1 a.rown from (select *,ROW_NUMBER() over(order by id) rown from table) a
where a.value=0)-1) *
from table order by id

支持(0) 反对(0) nianhua11 | 园豆:736 (小虾三级) | 2014-05-05 15:09

@Weca: 如果表数据多了 

select *,ROW_NUMBER() over(order by id) rown from TTTT

性能损耗会很大

支持(0) 反对(0) 芒果の冰 | 园豆:187 (初学一级) | 2014-05-09 09:33
0

楼上应该是正解,就差在末尾再加上 order by id

xgdw | 园豆:4 (初学一级) | 2014-05-04 12:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册