ID(主键(自增加1)     name
1                    abc
3                    efg
100                  cctv
120                  aede
对于以上的表结构,如果我想得到例如以下的结果,该怎么写sql呢1                    abc
2                    efg
3                   cctv
4                   aede期望大家的关注

解决方案 »

  1.   


    --2000
    select pid=(select count(1) from 表名 where ID<=a.ID), name from 表名 a
    --2005
    select pid=row_number() over(order by id),name from 表名
      

  2.   

    declare @t table(id int,name varchar(20))
    insert @t select 1,'abc'
    insert @t select 3,'efg'
    insert @t select 100,'cctv'
    insert @t select 120,'aede'select ROW_NUMBER() over(order by id) as id,name
    from @t
    /*
    id                   name
    -------------------- --------------------
    1                    abc
    2                    efg
    3                    cctv
    4                    aede
    */
      

  3.   

    select id=(select count(1) from tb where ID<=t.ID),name from tb t
      

  4.   

    只显示name就是了啊,然后把ID排序就是了啊!
      

  5.   

    select id=(select count(1) from ta where ID <= a.ID), 
           name 
    from ta a
      

  6.   

    你的ID是自增列,不能更改,只能查询显示.--sql 2000
    select id = (select count(1) from tb where name < t.name) + 1 , name from tb t--sql 2005
    select id = row_number() over(order by name) , name from tb 
      

  7.   

    哦,应该用ID来比较,不是用name.--sql 2000
    create table tb(ID int, name varchar(10))
    insert into tb values(1   ,'abc')
    insert into tb values(3   ,'efg')
    insert into tb values(100 ,'cctv')
    insert into tb values(120 ,'aede')
    goselect id = (select count(1) from tb where id < t.id) + 1 , name from tb tdrop table tb/*
    id          name       
    ----------- ---------- 
    1           abc
    2           efg
    3           cctv
    4           aede(所影响的行数为 4 行)
    */--sql 2005
    create table tb(ID int, name varchar(10))
    insert into tb values(1   ,'abc')
    insert into tb values(3   ,'efg')
    insert into tb values(100 ,'cctv')
    insert into tb values(120 ,'aede')
    goselect id = row_number() over(order by id) , name from tb drop table tb/*
    id                   name
    -------------------- ----------
    1                    abc
    2                    efg
    3                    cctv
    4                    aede(4 行受影响)*/