select field1,field2 from table上述SQL语句可返回行,但我想再加一列,自动生成从1开始的序号,应该怎么做。

解决方案 »

  1.   

    alter table tb add id int identity
      

  2.   

    但是我不想修改表结构,而且有时需要加Where子句,这样的话ID就不连续了。
      

  3.   

    select [id]=identity(int,1,1),* into # from 表
    select * from #drop table #
      

  4.   

    能不能在一个SQL语句中完成,谢谢。
      

  5.   


    select [id]=identity(int,1,1),field1,field2 from table
      

  6.   

    楼上方法不可行
    顶自强不息和SHAKA
      

  7.   

    select [id]=identity(int,1,1),field1,field2 from table
    我试了,是不行的。xeqtr1982(Visual C# .NET)的方法是正确的,但我希望用一个语句,有没有办法
      

  8.   

    identity(int,1,1) 必须要带into一起用
      

  9.   

    正解。identity(int,1,1) 必须要带into一起用
      

  10.   

    没办法,IDENTITY是要和INTO一起用的. 一条语句可能无法完成你的要求.但是如果,你表中的某个字段的数值没有重复值,那么可以试一下暂用他当标识来比较比如测试数据如下
    DECLARE @tb TABLE(id int,field1 int,field2 int)
    INSERT @tb
    SELECT 1,19,4 UNION
    SELECT 3,12,11 UNION
    SELECT 5,11,12 UNION
    SELECT 4,14,1 
    SELECT * FROM @tb那么写法是
    SELECT id,field1,field2,(SELECT COUNT(*) FROM @tb b WHERE b.id<=a.id) FROM @tb a
      

  11.   

    SELECT IDENTITY (int),字段1,....into 表
      

  12.   

    支持 fcuandy(www.iaspnet.com)  or SELECT COUNT(a.id) AS 编号, a.id, a.num
    FROM a INNER JOIN
          a b ON a.id >= b.id
    GROUP BY a.id, a.num
      

  13.   


    SELECT id,field1,field2,(SELECT COUNT(*) FROM @tb b WHERE b.id<=a.id) FROM @tb a
    这个语句,真是配服
    要是有1W条记录,得查多少次呀,我怕服务器会瘫的
      

  14.   

    1w条你服务器就瘫了?不会是你公司用外面那些用DOS下WPS打字的机器做的服务器吧你举个100w条的例子,或许我会信服
      

  15.   

    oracle 可以用 rownumsqlserver...http://www.delphibbs.com/delphibbs/dispq.asp?lid=1790489
      

  16.   

    select *, identify(int,1,1) as newID into newTable from oldTable
    然后就可以做类似下面的操作了:
    select * from newTable
    where newID>10最后 drop table newTable