首页 新闻 搜索 专区 学院

【sql问题】有点挑战哦

0
悬赏园豆:5 [已解决问题] 解决于 2012-06-21 16:54

查询出数据 1 2 3 6 7 9条数据怎么实现 

小猿随想的主页 小猿随想 | 初学一级 | 园豆:197
提问于:2012-06-21 14:24
< >
分享
最佳答案
0

这个也有挑战?你的123679这个数据是怎么来的?有规律不?只要有规律的就没什么难度。

收获园豆:5
无之无 | 大侠五级 |园豆:5085 | 2012-06-21 14:47

规律在图片上啊 瞅一眼 *_*

小猿随想 | 园豆:197 (初学一级) | 2012-06-21 14:57

@_张生: 哈,看明白了。我看下是否有简洁的解决方案。实在不行可能就只有使用临时表了。

无之无 | 园豆:5085 (大侠五级) | 2012-06-21 15:11

@_张生: 

下面代码是一个设计的代码,可惜这段代码在SQL执行不了:

declare @v nvarchar(50)
set @v = '';
SELECT TOP 1000 [id]
      ,@v = [value]
  FROM [tempdb].[dbo].[test]
  where [value] <> @v

如能找到类似的代码应该是可行的。

无之无 | 园豆:5085 (大侠五级) | 2012-06-21 15:27

@_张生: 

以下代码简单达到了目的:

declare @v nvarchar(50)
declare @id int
declare @flag bit

set @flag = 1;
set @id=0;
set @v = '';

WHILE @flag = 1
begin 
    set @flag = 0
    SELECT TOP 1 @id = [id]
        , @flag = 1
      , @v = [value] 
        FROM [tempdb].[dbo].[test]
            where [value] <> @v and id > @id
            order by id asc
    if @flag = 1
    begin
        select @id as id, @v as value
    end
end

但结果却是惨不忍睹!

我调试了下,如果使用DATASET,那么每条记录一个表,如果直接使用DBREADER,则只有第一个表的记录。

看来,只有使用临时表来解决这个问题了。

无之无 | 园豆:5085 (大侠五级) | 2012-06-21 15:56

@笨笨蜗牛:感谢你的耐心啊 自己解决咯  3ks

小猿随想 | 园豆:197 (初学一级) | 2012-06-21 17:08

@_张生: HOHO,把你的方案说出来看看。

无之无 | 园豆:5085 (大侠五级) | 2012-06-21 17:11
其他回答(1)
0

SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE where rowid in (1,2,3,6,7,9)

把表名和字段改一下试试。

悟行 | 园豆:12373 (专家六级) | 2012-06-21 14:37

数据几万行啊 ==

支持(0) 反对(0) 小猿随想 | 园豆:197 (初学一级) | 2012-06-21 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册