name    age
li      12
li      12
li      12
zhao    10
zhao    10
如何把里面的age 值递加,即不让里面的AGE不出现重复。
以上NAME 和AGE并不代表真实的字段。只是假设把所有年龄设置为不一样的。

解决方案 »

  1.   

    INSERT INTO table1 (name, age) SELECT 'Zhao' AS [name], MAX(age)+1 as age FROM table1
      

  2.   

    --> 测试数据
     
    declare @tb table ([name] nvarchar(10),[age] int)
    Insert into @tb
     select 'li',12 union all 
     select 'li',12 union all 
     select 'li',12 union all 
     select 'zhao',10 union all 
     select 'zhao',10declare @tbT table(id int identity(1,1),[name] nvarchar(10),[age] int)
    insert into @tbT
    select [name],[age] from @tb
    Select [name],age +id as age from @tbT
    /*
    name       age
    ---------- -----------
    li         13
    li         14
    li         15
    zhao       14
    zhao       15
    */
    --如果名称或者只要有一个栏位不重复,那么
    --> 测试数据
     
    declare @tb table ([name] nvarchar(10),[age] int)
    Insert into @tb
     select 'A',12 union all 
     select 'B',12 union all 
     select 'C',12 union all 
     select 'D',10 union all 
     select 'E',10select [name],[age]+ (select count(1)+1 from @tb where [name] <t.[name]) as age from @tb t
    /*
    name       age
    ---------- -----------
    A          13
    B          14
    C          15
    D          14
    E          15
    */
      

  3.   

    我就假设你就这两字段,将age设为主键~~~你想插重的都不行~
      

  4.   

    把AGE列加索引啊,这样就可以符合你的要求了。
      

  5.   

    INSERT INTO table1 (name, age) values('name',age新值+ SELECT max(tag) FROM table1)