表A1
AutoID 班
1      1班
2      2班
3      3班declare @num int
declare @i int
  select @num=COUNT(AutoID) FROM [dbo].[A1]
  set @i=0
  while @i<@num
  Begin
  --通过循环取出班  
  set @i=@i+1
  end
  print @i问题:怎么通过循环取出A1中的字段班的值

解决方案 »

  1.   

    有必要这么复杂么?
    select * from A1不就行了。
    如果表中又重复值,那就是数据重复了,是输入有问题。
      

  2.   

    那就用游标操作declare @class nvarchar(50)
    declare cursor1 cursor for
    select class from A1
    open cursor1
    fetch next from cursor1 into @class
    while @@fetch_status=0
    begin
    print @class
    fetch next from cursor1 into @class
    end
    close cursor1
    deallocate cursor1
      

  3.   

    ----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2013-02-18 22:31:51
    -- Version:
    --      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
    -- Jun 17 2011 00:57:23 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[A1]
    if object_id('[A1]') is not null drop table [A1]
    go 
    create table [A1]([AutoID] int,[班] varchar(3))
    insert [A1]
    select 1,'1班' union all
    select 2,'2班' union all
    select 3,'3班'
    --------------开始查询----------------------------select * from [A1]declare @num int
    declare @i int
      select @num=COUNT(AutoID) FROM [dbo].[A1]
      set @i=1
      while @i<=@num
      Begin
      SELECT [班] FROM a1 WHERE autoid=@i
      set @i=@i+1
      end
      print @i----------------结果----------------------------
    /* (3 行受影响)

    ----
    1班(1 行受影响)班
    ----
    2班(1 行受影响)班
    ----
    3班(1 行受影响)4*/
      

  4.   

    版主这种方法解决行,不能保证autoid的顺序
      

  5.   

    那你加入一个自增的ID咯,然后where那里用这个ID
      

  6.   

    假如我Select数据集的autoid是从10开始的呢,且autoid的初始值不确定,那怎么办?
      

  7.   

    那就变量控制咯,总之就是要在where中,autoid要等于变量,你的变量初始到哪个值,就从哪个autoid开始循环。
      

  8.   

    假如没有autoid字段,怎么把查出的数据集通过while的方式循环出来呢
      

  9.   

    没有autoid字段,那么就要在开始while之前,用row_number()over(order by getdate())增加一个自增的ID,getdate()那里可以使用一些有顺序意义的列,其实就是没有一个顺序列,也要整一个出来。
      

  10.   

    按版主的做了,where 中不能找到id
    我已解决
    declare @Top1 int
    declare @Top2 int
    declare @num int
      declare @i int
      select @num=COUNT(AutoID) FROM A1
      set @i=0
      select top 1 @Top1=autoid  FROM A1 order by autoid asc
      while @i<@num
      Begin
        select @Top2=@Top1
        select TeamCode,autoid FROM A1
        where  AutoID=@Top1
        
        select top 1 @Top1=autoid  FROM A1 where autoid>@Top2 order by autoid asc
       
      set @i=@i+1
      end